在字符串中查找链接

时间:2011-12-08 20:22:48

标签: php regex url preg-match

我找到了一个包含正则表达式列表的页面,用于测试有效的网址。 http://mathiasbynens.be/demo/url-regex

来自Diego Pernini的人似乎是最好的选择。 https://gist.github.com/729294

现在我无法让这个正则表达式在字符串中找到一个url。

我想隔离此字符串中的网址:

$string = 'Really digging new the twitter design! http://t.co/71dEuIY8';

这个正则表达式给了我0

preg_match_all('%^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@|\d{1,3}(?:\.\d{1,3}){3}|(?:(?:[a-z\d\x{00a1}-\x{ffff}]+-?)*[a-z\d\x{00a1}-\x{ffff}]+)(?:\.(?:[a-z\d\x{00a1}-\x{ffff}]+-?)*[a-z\d\x{00a1}-\x{ffff}]+)*(?:\.[a-z\x{00a1}-\x{ffff}]{2,6}))(?::\d+)?(?:[^\s]*)?$%iu', $string, $match);

当我使用仅包含url的字符串时,它匹配有效的URL:

$string = 'http://t.co/71dEuIY8';

如何调整此正则表达式,以便在不仅仅是网址的字符串中隔离有效的网址或网址?

1 个答案:

答案 0 :(得分:1)

你的问题是开始时的^和结尾的$。 这意味着链接必须以这种方式开始和结束。这就是为什么它匹配隔离的链接但不匹配字符串。