我有这样的正则表达式行话抢YouTube视频ID的preg_match_all()和YouTube正则表达式
preg_match_all('/(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/ ]{11})/i', $string, $res);
但是它似乎并没有与该示例中的字符串波纹管正常工作:
<?php
$string = "yet, another youtube video.
[url=http://www.youtube.com/watch?feature=player_embedded&v=6kVpM5WK5JI#]http://www.youtube.com/watch?feature=player_embedded&v=6kVpM5WK5JI#[/url]
Fonte:onothersite";
preg_match_all('/(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/ ]{11})/i', $string, $res);
print_r($res);
?>
上面的代码输出该:
Array (
[0] =>
Array (
[0] => youtube.com/watch?feature=player_embedded&v=6kVpM5WK5JI#]http://www.youtube.com/watch?feature=player_embedded&v=6kVpM5WK5JI#[/url] Font
)
[1] =>
Array (
[0] => url] Font
)
)
并且应该输出第是:
Array (
[0] =>
Array (
[0] => youtube.com/watch?v=6kVpM5WK5JI
)
[1] =>
Array (
[0] => 6kVpM5WK5JI
)
)
任何想法如何解决这个问题?
谢谢。
您可以考虑匹配一个通用的URL(以'youtube.com'或'youtu.be'开头),然后使用['parse_url'](http://php.net/)提取实际参数manual/en/function.parse-url.php)和['parse_str'](http://uk3.php.net/manual/en/function.parse-str.php)。 –
这有帮助吗?:http://stackoverflow.com/questions/5830387/php-regex-find-all-youtube-video-ids-in-string/5831191#5831191 –
另请参阅:http://stackoverflow.com/questions/2936467/parse-youtube-video-id-using-preg-match –