Php YouTube链接未提供视频id
我尝试过这个方法,但失败了:Php YouTube链接未提供视频id,php,algorithm,youtube,Php,Algorithm,Youtube,我尝试过这个方法,但失败了: $whereIsMyCake = ''; // // put all the links here // $url = "http://www.youtube.com/embed/more_yougooglelink"; $url = "http://www.youtube.com/v/..." // works $url = "http://www.youtube.com/watch?v=ue1mLnyEd90"; // WORKS $url = "h
$whereIsMyCake = '';
//
// put all the links here
//
$url = "http://www.youtube.com/embed/more_yougooglelink";
$url = "http://www.youtube.com/v/..." // works
$url = "http://www.youtube.com/watch?v=ue1mLnyEd90"; // WORKS
$url = "http://youtu.be/we_youGoogle_u"; // WORKS
parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars );
if($my_array_of_vars['v']=='') {
preg_match(
"#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+(?=\?)|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#",
$url,
$matches);
$whereIsMyCake = $matches[0];
} else {
$whereIsMyCake = $my_array_of_vars['v'];
}
echo $whereIsMyCake;
$whereIsMyCake='';
//
//把所有的链接放在这里
//
$url=”http://www.youtube.com/embed/more_yougooglelink";
$url=”http://www.youtube.com/v/...“//有效
$url=”http://www.youtube.com/watch?v=ue1mLnyEd90"; // 作品
$url=”http://youtu.be/we_youGoogle_u"; // 作品
parse_str(parse_url($url,PHP_url_QUERY),$my_array_of_vars);
if($my_array_of_vars['v']=''){
预赛(
“#”(?您可以使用一个更完整的正则表达式,如本答案中所述:。该答案还讨论了YouTube的oembed服务,您可能会发现它很有用
此外,你可以使用YouTube API。这样,如果格式改变,你仍然是黄金
为了缓解您对YouTube URL更改的担忧,请注意:想想所有有YouTube视频链接的博客、网站和电子邮件。如果URL格式在不支持旧格式的情况下更改,所有这些链接都将被破坏。谷歌有充分的理由不经常更改其URL。(这并不是说他们不会…)
编辑
使用我提供的SO链接中的代码,ID以您需要的所有格式从URL中提取:
function youtube_id_from_url($url) {
$pattern =
'%^# Match any youtube URL
(?:https?://)? # Optional scheme. Either http or https
(?:www\.)? # Optional www subdomain
(?: # Group host alternatives
youtu\.be/ # Either youtu.be,
| youtube\.com # or youtube.com
(?: # Group path alternatives
/embed/ # Either /embed/
| /v/ # or /v/
| /watch\?v= # or /watch\?v=
) # End path alternatives.
) # End host alternatives.
([\w-]{10,12}) # Allow 10-12 for 11 char youtube id.
$%x'
;
$result = preg_match($pattern, $url, $matches);
if (false !== $result) {
return $matches[1];
}
return false;
}
$urls[] = "http://www.youtube.com/embed/ue1mLnyEd90";
$urls[] = "http://www.youtube.com/v/ue1mLnyEd90";
$urls[] = "http://www.youtube.com/watch?v=ue1mLnyEd90";
$urls[] = "http://youtu.be/ue1mLnyEd90";
foreach ($urls as $url) {
assert(youtube_id_from_url($url) === 'ue1mLnyEd90'); # Passes
}
“给我代码”…到目前为止你都尝试了什么?因为简单的strstrstr
和substr
会很快给你正确的结果,有什么问题吗?谢谢,我不知道该朝哪个方向走,我想我会用python来做,但你的逻辑很好谢谢。