如何改进此正则表达式以适应包含-
的youtube ID?
我已经测试了其他线程中发现的几个正则表达式,但他们没有在id中考虑-
。
youtube链接有时会非常复杂。
$url = 'http://www.youtube.com/watch?v=iol0B-clFFM"; //valid youtube link
$pattern = "/(?<=(?:v|i)=)[a-zA-Z0-9-]+(?=&)|(?<=(?:v|i)\/)[^&\n]+|(?<=embed\/)[^\"&\n]+|(?<=(?:v|i)=)[^&\n]+|(?<=youtu.be\/)[^&\n]+/";
preg_match($pattern,$url,$matches);
echo $matches[0];
上面的结果仅返回iol0B
,它会在-
答案 0 :(得分:1)
你的模式有效,但也许你可以缩短它:
$pattern = '~(?<=[vi][=/]|youtu\.be/|embed/)[a-z0-9-]+~i';