2010-10-24 55 views
0

我发现推文中的一个链接,我目前的正则表达式不会解析,我似乎无法弄清楚如何让它工作(可能是由于我与正则表达式无法使用)。解析推文链接的正则表达式

下面是当前的代码:

preg_match_all('@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@',$description, $matches, PREG_SET_ORDER); 

而且不会解析鸣叫:

亚马逊:为期14天的贷款来 的Kindle “今年晚些时候”。 http://usat.me?128426

这是usat.me链接搞砸了。有什么想法吗?

回答

1
((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?((/)?([-\w/_\.]*(\?\S+)?)?)*) 

尝试。应该管用。修改/为(/)?这意味着最后一个斜杠应该是0或1次。

+0

看起来不错。非常感谢。 – Noah 2010-10-24 15:29:27

1

你可以在这里尝试一下,它的工作,至少对我来说:

http://www.spaweditor.com/scripts/regex/

你可以试试这个正则表达式:

(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’])) 
+0

不知道那个网站,谢谢。不幸的是,它仍然返回http://usat.me,而不是完整的URL。 – Noah 2010-10-24 14:49:04

+0

您是否尝试过我提供的RegEx?它工作正常 – infinity 2010-10-24 14:54:59

+0

谢谢,但测试工具踢这回:“未知修饰符”\“” – Noah 2010-10-24 14:58:32