我有这个正则表达式模式来获取 YouTube 视频 ID
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
)
)
知道如何解决这个问题吗?
谢谢。