Php Youtube oembed工作正常,但并不总是如此。为什么?
我正在使用PHP curl获取youtube视频的缩略图和更多内容,大多数时候它都能正常工作,但并不总是如此 这一个有效: 星际飞行-预览 但这一条没有: 惊奇漫画的复仇者:奥创时代-预告片 不起作用的是可嵌入的: 我不会犯错误 我正在使用的代码: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
(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在我的浏览器中都显示良好