PHP preg_match也可以从img.youtube.com获取YouTube ID

时间:2015-01-30 11:41:08

标签: php regex youtube

我已经实现了一个抓取Youtube ID的函数,我使用了正则表达式:

preg_match('%(?:youtube(?:-nocookie)?\.com/(?:(?:v|e(?:mbed)?)/|.*[?&]v=|[^/]+/.+/)|youtu\.‌​be/)([^"&?/ ]{11})%i', $sourceCode, $youtube)) 

我的问题是这个resular表达式不会从以下网址中获取ID:http://img.youtube.com/vi/Di9mW35zprs/0.jpg

那么,我怎样才能将它改成现在正常工作,但是也可以通过URL“http://img.youtube.com/vi/Di9mW35zprs/0.jpg”给我“Di9mQ35zprs”?

我想要实现的目标是替换我当前的preg_match并使其能够从http://img.youtube.com/vi/Di9mW35zprs/0.jpg网址中获取您的YouTube ID。

谢谢!

2 个答案:

答案 0 :(得分:0)

首先使用parse_url()explode()。现在你的正则表达式似乎直接来自地狱。

答案 1 :(得分:0)

尝试使用:

 $videoId = preg_replace("/.*v[=i]\/?(\w+).*/", '\1', "http://img.youtube.com/vi/Di9mQ35zprs/0.jpg");

该函数将返回您想要的ID。它应该适用于您描述的两种类型的URL。