0

在 WordPress 中,我使用的是与我一直拥有的相同的 YouTube 嵌入代码,但现在它正在返回并且未定义偏移量的错误:1 - 我注意到它在代码中也适用的行。

function embed_youtube_video($post_id) {
    $share_url = get_field('share_url');
    preg_match('/youtu\.be\/(.+)$/', $share_url, $matches);
    // the next line throws the error
    if( $matches[1]) { 
        return '<iframe width="640" height="360" src="http://www.youtube.com/embed/' . $matches[1] . '?rel=0&wmode=transparent" frameborder="0" allowfullscreen></iframe>';
    } else {
        return false;   
    }
}

现在我不是 PHP 专家,并且从旧站点窃取了这段代码,所以我可能做了一些超级容易修复的事情,只是没有发现它。提前感谢您的帮助。

4

1 回答 1

1

您收到错误是因为没有匹配项,因此$matches[1]不存在。

要保持代码流相同,请将行更改为:

if(isset($matches[1])) {

我应该提到,isset()检查是否定义了变量。在这种情况下,我们检查以确保$matches[1]已定义。它完成与现有行相同的任务而不会引发错误,因为isset()它不受未定义错误的影响,因为它的功能性质。

于 2013-01-09T19:56:50.833 回答