我已经实现了一个抓取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。
谢谢!
答案 0 :(得分:0)
首先使用parse_url()和explode()。现在你的正则表达式似乎直接来自地狱。
答案 1 :(得分:0)
尝试使用:
$videoId = preg_replace("/.*v[=i]\/?(\w+).*/", '\1', "http://img.youtube.com/vi/Di9mQ35zprs/0.jpg");
该函数将返回您想要的ID。它应该适用于您描述的两种类型的URL。