メッセージ システムを作成しましたが、新しいメッセージが投稿された場合に、メッセージ内の URL リンクをクリック可能な HTML リンクに自動変換したいと考えています。この単純な関数を作成しましたが、正常に機能しません。
// LINK ALL URLS
$message = ereg_replace("http://([.]?[a-zA-Z0-9_/-])*", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $message);
$message = ereg_replace("(^| |\n)(www([.]?[a-zA-Z0-9_/-])*)", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $message);
一部の URL では機能していますが、他の URL では問題があり、結果は次のようになります。
<a href="http://www.example.com/index.php">http://www.example.com/index.php</a>?mode=index&page=1
また
<a href="http://www.youtube.com/watch">http://www.youtube.com/watch</a>?v=jSh5Y7jq9FQ
ご覧のとおり、クエスチョンマークの後ろの部分も含めて正しく変換されていません。誰かが上記の私のコードを修正/更新してもらえますか? ところで、 *ereg_replace* を使用する代わりに、おそらく別の (そしてより良い!) 解決策があるでしょうか?