2012-04-27 11 views
0

文字列(入力されたURLを含むことができる説明テキスト)から型付きURLを抽出してhrefに変換する正規表現があります。これは、URLが入力され、最後の文字が "、" ")である場合を除いて、URLの一部としてこの文字も使用されるという点を除いて、すべて正常に動作します。どうすればこれを防ぐことができますか?regexを使用して文字列から特定の文字を除外します

例のテキスト:

こんにちは、これは私のリンクが含まれている美しいメッセージ(www.website.comを参照)、いくつかの詳細情報です。

私のregexは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);

(。私はこれをテストしていません)

関連する問題