php
1function getLink($s) 2{ 3 4 //getでパラメーターとかがついてるとなぜか空白にななる 5 $original_s = $s; 6 7 //空白確認 8 if (!$s) { 9 return ''; 10 } 11 //各正規表現 12 $re_url = '/((ftp|http|https)://(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(/|/([\w#!:.?+=&%@!\-/]))?)/i'; 13 $re_mail = '/((?:\w+.?)*\w+@(?:\w+.)+\w+)/i'; 14 $re_tel = '/([0-9]{6,9,10,11}|[0-9-]{12,13})/i'; 15 16 //置き換え処理 17 $s = preg_replace($re_url, '<a href="$1" target="_blank">$1</a>', $s); 18 $s = preg_replace($re_mail, '<a href="mailto:$1">$1</a>', $s); 19 $s = preg_replace($re_tel, '<a href="tel:$1">$1</a>', $s); 20 if ($s!="") { 21 return $s; 22 } else { 23 return $original_s; 24 } 25}
こちらのコードでurlを含む文字列のurlの部分をリンクタグで囲んで返しているのですが、getのパラメーターがついたurlだと上手くリンクタグを付与できず、空文字になってしまいます...
原因わかる方いらっしゃいますでしょうか
参考サイト
http://blog.livedoor.jp/kpopdrama-phphtmljs/archives/40011673.html
こんな感じのurlだとできません
http://サブドメイン.xxxxx.jp/phpmyadmin/index.php?db=xxxxx&table=xxxxx&target=sql.php&token=b04cf5d6078bca579f1c5f1e136ac587
token=b04cf5d6078bca579f1c5f1e136ac587ってところが悪いみたいです...
一応
$re_url = '/((ftp|http|https)://(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(/|/([\w#!:.?+=&%@!-/]))?)/i';
$re_mail = '/((?:\w+.?)*\w+@(?:\w+.)+\w+)/i';
$re_tel = '/([0-9]{6,9,10,11}|[0-9-]{12,13})/i';
の順番を
$re_mail = '/((?:\w+.?)\w+@(?:\w+.)+\w+)/i';
$re_tel = '/([0-9]{6,9,10,11}|[0-9-]{12,13})/i';
$re_url = '/((ftp|http|https)://(\w+:{0,1}\w@)?(\S+)(:[0-9]+)?(/|/([\w#!:.?+=&%@!-/]))?)/i';
このようにするとちゃんとリンクになるのですが、なぜ前者の順番だとできないのか分かりません...