URLをリンクに変換する
WikiなどではコンテンツにURLを記載すると自動的にリンクを張ってくれますが自分で作った簡易CMSでもこの機能を追加したいことがしばしば。
多分誰かが作っているのでしょうが、探し方が下手なのか見つけられませんでした。
早速作ってみました。
ただし簡易版ですので、すでにURLに対してリンクを張ってある文字列があると場合は二重にリンクしてしまいます。
ソース
<?php
$str=<<<ID
下記がそのリンクです<br>
http://php.nekosuke.com/sample/hoge.php?q=h&p=hoge1 <br>
URL2 http://php.nekosuke.com/sample/hoge.php?q=h&p=hoge2 ほげ <br>
URL3 http://php.nekosuke.com/sample/hoge.php?q=h&p=hoge3 ほげ <br>
URL4 ほげhttp://php.nekosuke.com/sample/hoge.php?q=h&p=hoge4 ほげ <br>
未変換 <a href="http://php.nekosuke.com/sample/hoge.php?q=h&p=hoge5">ほげ</a><br>
ID;
print "<h2>変換前</h2>";
print $str;
print "<h2>変換後</h2>";
print auto_url($str);
function auto_url($str){
preg_match_all("/(http:\/\/[\w\/\@\$()!?&%#:;.,~'=*+-]+)/i",strip_tags($str), $array_url);
for($i=0;$i<count($array_url[1]);++$i){
$linkhtml="<a href=\"$array_url[1][$i]\">$array_url[1][$i]</a>";
$str=str_replace($array_url[1][$i],"<a href=\"".$array_url[1][$i]."\">".$array_url[1][$i]."</a>",$str);
}
return $str;
}
?>