用于解析链接推文的正则表达式

时间:2010-10-24 14:38:59

标签: php regex twitter

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

这是当前的代码:

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

并且不会解析的推文:

  

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

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

2 个答案:

答案 0 :(得分:1)

你可以在这里试试,它至少对我有用:

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

您可以尝试此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`!()\[\]{};:'".,<>?«»“”‘’]))

答案 1 :(得分:1)

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

试试吧。应该管用。修改/是(/)?意思是最后一个斜线应该是0或1次。

相关问题