0

我该如何改进这个正则表达式以适应其中包含-的 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它在-

4

1 回答 1

1

您的模式有效,但也许您可以缩短它:

$pattern = '~(?<=[vi][=/]|youtu\.be/|embed/)[a-z0-9-]+~i';
于 2013-10-26T07:15:52.873 回答