Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Youtube oembed工作正常,但并不总是如此。为什么?_Php_Json_Curl_Youtube - Fatal编程技术网

Php Youtube oembed工作正常,但并不总是如此。为什么?

Php Youtube oembed工作正常,但并不总是如此。为什么?,php,json,curl,youtube,Php,Json,Curl,Youtube,我正在使用PHP curl获取youtube视频的缩略图和更多内容,大多数时候它都能正常工作,但并不总是如此 这一个有效: 星际飞行-预览 但这一条没有: 惊奇漫画的复仇者:奥创时代-预告片 不起作用的是可嵌入的: 我不会犯错误 我正在使用的代码: (preg_match('/(?<=youtu.be\/|youtube\.com\/(?=v|vi|\?v=|\?vi=|watch\?v=|watch\?vi=))/', $url)) { (preg_match('/^(?:ht

我正在使用PHP curl获取youtube视频的缩略图和更多内容,大多数时候它都能正常工作,但并不总是如此

这一个有效: 星际飞行-预览

但这一条没有: 惊奇漫画的复仇者:奥创时代-预告片

不起作用的是可嵌入的:

我不会犯错误

我正在使用的代码:

(preg_match('/(?<=youtu.be\/|youtube\.com\/(?=v|vi|\?v=|\?vi=|watch\?v=|watch\?vi=))/', $url)) {

 (preg_match('/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\'>]+)/', $url, $matches));

$url = 'https://www.youtube.com/oembed?url='.urlencode($url).'&format=json';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0');
curl_setopt($ch, CURLOPT_URL, $url);
$c = curl_exec($ch);
$json = json_decode($c);

if ( curl_errno($ch) ) {

 echo 'error:' . curl_error($ch);
 curl_close($ch);

} else {

 $title = $json->title;
 $thumbnail_url = $json->thumbnail_url;
 $author_name = $json->author_name;
 $author_url = $json->author_url;

return '
  <div class="youtube"><div class="src">youtube.com</div>
    <div class="youtube_thmbnl"><a href="https://www.youtube.com/watch?v=' . $matches[1] . '"><img src="' . $thumbnail_url . '"></a></div>
    <div class="youtube_title">' . $title . '</div>
    <div class="youtube_author">By: <a href="' . $author_url . '">' . $author_name . '</a></div>
  </div>';

}

curl_close($ch);
所以我的问题是,为什么有些不起作用,而有些不起作用?两个URL在我的浏览器中都显示良好