我已经实现了一个抓取Youtube ID的函数,我使用正则表达式:
preg_match('%(?:youtube(?:-nocookie)?'.com/(?:(?:v|e(?:mbed)?)/|.*[?&]v=|[^/]+/.+/)|youtu'.be/)([^"&?/ ]{11})%i', $sourceCode, $youtube))
我的问题是这个 reular 表达式不会从 URL 中获取 id,例如:http://img.youtube.com/vi/Di9mW35zprs/0.jpg
那么,我怎样才能将其更改为现在的工作方式,但也可以通过从 URL"http://img.youtube.com/vi/Di9mW35zprs/0.jpg"给我"Di9mQ35zprs"
?- 关于使用PREG_MATCH抓取YOUTUBE ID还有许多其他问题,但没有一个回答如何从URL http://img.youtube.com/vi/Di9mW35zprs/0.jpg 抓取的问题。
想要实现的只是替换我当前的preg_match,并使它能够从 http://img.youtube.com/vi/Di9mW35zprs/0.jpg 网址中获取youtube ID。
谢谢!
首先使用 parse_url() 和 explode()。现在你的正则表达式看起来像是直接从地狱来的。
尝试使用这个:
$videoId = preg_replace("/.*v[=i]'/?('w+).*/", ''1', "http://img.youtube.com/vi/Di9mQ35zprs/0.jpg");
该函数将返回您想要的 id。它应该适用于您描述的两种类型的 URL。