PHP で文字列中に含まれる URL に自動でリンクを張る

自分用メモ。PHP で文字列中に含まれる URL に自動でリンクを張る方法です。ereg_replace() を使います。『URLの自動リンクをする正規表現(PHP) – こまちドーナツ』 を参考に、というか丸パクリさせていただきました。多謝。

$text = ereg_replace("(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)",
					 "<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",
					 $text);

自動リンク以外にも、オリジナルの記法を使って自動リンクを張りたい時なんかにも使えます。で、以下のようなありがちな記法でテキスト中に自動でリンクを張るようにしてみたのですが…。

 
[[リンクされる文字列:リンクさせたいファイル名]]

例:
詳細は[[要綱:outline.pdf]]および[[申込書:applyform.pdf]]をご覧ください。
 

僕の能力では ereg_replace() では上手く最短一致させることが出来ず、結局 preg_replace() を使って以下のようにしました。

$text = preg_replace("/\[\[(.*?):(.*?)\]\]/",
					 "<a href=\"./\\2\">\\1</a>",
					 $text);
スポンサーリンク
レクタングル(大)
レクタングル(大)