wiki文法のようにリンク生成
正規表現について分からない点があり、質問させて頂きます。
いま、
[[link(http://hoge.com?id=123):リンク456]]
のように入力された部分を、
<a href="http://hoge.com?id=123">リンク456</a>
のように書き換える関数(CreLink())を作っています。
これ自体は作成することができ、機能したのですが、
本文中に記述されたURLをリンクに置き換える関数(EditURL())と競合してしまい、
結果的に正しく機能しないという状況が起きています。
function EditURL($string) {
$new_str = mb_ereg_replace("(https?|ftp)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","<a href=\"\\0\" rel=\"external\">\\0</a>", $string);
return $new_str;
}
具体的には、CreLink() で生成した
href="http://hoge.com?id=123"
の部分でも EditURL() が実行されてしまい、
<a href="<a href="http://hoge.com?id=123" rel="external">http://hoge.com?id=123"</a>>リンク456</a>
というふうに出力されてしまいます。
文中に入力されたURL部分をリンクに置き換えつつ、
[[link(http://hoge.com?id=123):リンク456]]
のように記述されている個所を
<a href="http://hoge.com?id=123">リンク456</a>
と置き換えるには、どうしたら良いでしょうか?