2

我需要包含多个链接的字符串中的第一个网址(视频网址可能是 youtube、vimeo 或dailymotion)

这是我存储在$content变量中的内容。

"Hello this is a test video<br>http://www.youtube.com/watch?v=wE7AQY5Xk9w<br>This is another test&nbsp;<br>http://www.youtube.com/watch?v=GqcqapoFy-w<br>"

在这种情况下,我正在尝试获取网址http://www.youtube.com/watch?v=wE7AQY5Xk9w

我已使用此代码获取第一个链接。

$pattern = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
preg_match($pattern, $content, $matches);
print_r($matches);

但我得到了结果

array(
    (int) 0 => 'http://www.youtube.com/watch?v=wE7AQY5Xk9w<br>This',
    (int) 1 => 'http',
    (int) 2 => '/watch?v=wE7AQY5Xk9w<br>This'
)

正则表达式模式中有什么我遗漏的吗?

我正在使用 PHP 5.3.13

谢谢

4

1 回答 1

1

不确定您是否从上面的评论中解决了这个问题......但是,您的正则表达式似乎已经走了很长一段路。

你可以只使用:/((http|https|ftp|ftps)[:=#\w\.\/\?\-]+)/

这将匹配以下 URL:

http://www.dailymotion.com/video/x124dv4_8-month-old-deaf-baby-hears-for-the-first-time_fun#.Ueu0YuEju1E
http://www.youtube.com/watch?v=wE7AQY5Xk9w
http://vimeo.com/channels/staffpicks/67576646
http://www.youtube.com/watch?v=GqcqapoFy-w

在本文中:

Hello http://www.dailymotion.com/video/x124dv4_8-month-old-deaf-baby-hears-for-the-first-time_fun#.Ueu0YuEju1E this is a test video<br>http://www.youtube.com/watch?v=wE7AQY5Xk9w<br>This is another http://vimeo.com/channels/staffpicks/67576646 test&nbsp;<br>http://www.youtube.com/watch?v=GqcqapoFy-w<br>
于 2013-07-21T10:26:45.757 回答