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);
4

2 に答える 2

1

URL終了文字のリストに「、」および「)」を含めます。バックスラッシュで「)」をエスケープすることを忘れないでください。言い換えれば、次のことを試してください。

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

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

于 2012-04-27T16:06:44.087 に答える
1

url.trythisの後に一致するもののように見えます。

preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r< ][^\,)]*)#", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $text);
于 2012-04-27T16:11:08.360 に答える