2010-10-24 68 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