来自嵌入代码或带有PHP正则表达式RegEx的URL的YouTube Vimeo视频ID
我想通过嵌入代码或URL获取YouTube或Vimeo的视频ID,有没有用PHP实现这一点的解决方案?您可以用来获取ID。我将在后面的回答中介绍表达式本身,但以下是如何使用preg_match的基本概念:来自嵌入代码或带有PHP正则表达式RegEx的URL的YouTube Vimeo视频ID,php,regex,youtube,vimeo,Php,Regex,Youtube,Vimeo,我想通过嵌入代码或URL获取YouTube或Vimeo的视频ID,有没有用PHP实现这一点的解决方案?您可以用来获取ID。我将在后面的回答中介绍表达式本身,但以下是如何使用preg_match的基本概念: preg_match('expression(video_id)', "http://www.your.url.here", $matches); $video_id = $matches[1]; 下面是您询问的每种可能输入类型的表达式明细。我为每个测试添加了一个链接,显示了一些测试用例和
preg_match('expression(video_id)', "http://www.your.url.here", $matches);
$video_id = $matches[1];
下面是您询问的每种可能输入类型的表达式明细。我为每个测试添加了一个链接,显示了一些测试用例和结果
http://www.youtube.com/watch?v=89OpN_277yY
,您可以使用表达式:
v=(.{11})
player\.vimeo\.com\/video\/([0-9]{1,10})
http://vimeo.com/
,据我所知。我找到的最低值只是http://vimeo.com/2
,我不知道是否有上限,但我现在假设上限是10位。希望有人能纠正我,如果他们知道的细节。可以使用以下表达式:
vimeo\.com\/([0-9]{1,10})
<iframe src="http://player.vimeo.com/video/<integer>" width="400" ...
或者,如果数字的长度最终可能超过10,则可以使用:
player\.vimeo\.com\/video/([0-9]*)"
请记住,如果将表达式括在双引号中,则需要使用\
对“
进行转义总之,我不确定您想如何实现这一点,但您可以将所有表达式与
|
组合,也可以将每个表达式单独匹配。如果您希望我提供有关如何组合表达式的详细信息,请在此答案中添加注释。还有另一个类似的[仅适用于youtube]回答这里,可能是有用的看看。
根据最新的youtube标准,您可以使用以下代码从嵌入代码中提取视频id
$embed = '<iframe src="//www.youtube.com/embed/n6WYu-pSXH8" frameborder="0"></iframe>';
preg_match('~embed/(.*?)"~', $embed, $output);
echo $output[1];
$embed='';
预匹配(“~embed/(.*)”~”,$embed,$output);
echo$输出[1];
谢谢还有一个问题有很多很好的答案,特别是@user2200660 我更喜欢使用一个正则表达式,它既可以处理嵌入的代码,也可以处理当前使用的任何URL
http://vimeo.com/423630
https://vimeo.com/1399176
http://vimeo.com/423630087
https://vimeo.com/423630087
https://player.vimeo.com/video/423630087
https://player.vimeo.com/video/423630087?title=0&byline=0&portrait=0
https://vimeo.com/channels/staffpicks/423630087
https://vimeo.com/showcase/7008490/video/407943692
可以处理我遇到的所有URL的正则表达式:
(https?:\/\/)?(www\.)?(player\.)?vimeo\.com\/?(showcase\/)*([0-9))([a-z]*\/)*([0-9]{6,11})[?]?.*
感谢@zeckdude提供PHP中的原始示例代码
JavaScript版本:
当我将这些正则表达式与preg\u match一起使用时,似乎没有得到任何匹配。我应该以某种方式修改它们还是正则表达式的风格不同?不要忘记/分隔符。例如,Vimeo使用:preg_match('/player\.Vimeo\.com\/video\/([0-9]{1,10})/',“your.url.here”,$matches)$video_id=$matches[1];
$embed = '<iframe src="//www.youtube.com/embed/n6WYu-pSXH8" frameborder="0"></iframe>';
preg_match('~embed/(.*?)"~', $embed, $output);
echo $output[1];
http://vimeo.com/423630
https://vimeo.com/1399176
http://vimeo.com/423630087
https://vimeo.com/423630087
https://player.vimeo.com/video/423630087
https://player.vimeo.com/video/423630087?title=0&byline=0&portrait=0
https://vimeo.com/channels/staffpicks/423630087
https://vimeo.com/showcase/7008490/video/407943692
(https?:\/\/)?(www\.)?(player\.)?vimeo\.com\/?(showcase\/)*([0-9))([a-z]*\/)*([0-9]{6,11})[?]?.*
$vimeo = 'http://player.vimeo.com/video/67019023';
if(preg_match("/(https?:\/\/)?(www\.)?(player\.)?vimeo\.com\/?(showcase\/)*([0-9))([a-z]*\/)*([0-9]{6,11})[?]?.*/", $vimeo, $output_array)) {
echo "Vimeo ID: $output_array[6]";
}