我找到了一个包含正则表达式列表的页面,用于测试有效的网址。 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';
如何调整此正则表达式,以便在不仅仅是网址的字符串中隔离有效的网址或网址?
答案 0 :(得分:1)
你的问题是开始时的^和结尾的$。 这意味着链接必须以这种方式开始和结束。这就是为什么它匹配隔离的链接但不匹配字符串。