2012-04-27 85 views
0

我有一個正則表達式從字符串(可能包含輸入的URL的描述文本)中提取輸入的URL,並將它們轉換爲href。這一切都可以正常工作,除了當輸入一個URL並且它的最後一個字符是「)」時,它也會將這個字符作爲URL的一部分。我怎麼能阻止呢?使用正則表達式排除字符串中的特定字符

示例文本:

你好,這是我的美麗消息包含一個鏈接(見www.website.com)和其他的一些信息。

我的正則表達式讀取URL時,也會在創建href時產生最後一個字符「)」,導致鏈接錯誤。

我正則表達式:

preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r< ]*)#", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $text); 

回答

1

它看起來像url.try這之後您匹配任何東西。

preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r< ][^\,)]*)#", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $text); 
1

包括 「」 和 「)」 中的URL終止字符列表。不要忘了用反斜槓「)」。換句話說,嘗試:

preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r< \),]*)#", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $text);

(我沒有測試過這一點。)

相關問題