他のQ&Aのところで質問させてもらってたのですが、最終的な回答がつかずで、少し急いでいるためこちらで質問させてください。
やりたいことは、掲示板の書き込まれたコメント内に、URLが入っていた場合自動リンクにする処理と、同じコメント内に、 >○○さん という文字列が入っていた場合この文字列を太字にする
ということがやりたくて関数を書いたのですが、URLの方はちゃんと反映されるのですが、太字にする方が出来ません。エラーメッセージは出ていません。(ちなみに、○○部分に > も さん も入ることはないのでそこの細かいチェックは必要ないです)
コードについてですが、
mySQLに保存しているコメントをSQL文で呼び出して$mojiretu2_2 というのに代入しています。
###該当のソースコード
if (!function_exists('change2')) { function change2($mojiretu2_2){ $keyword_start = '>'; $keyword_end = 'さん'; if(preg_match("/(http|https):\/\/[-\w\.]+(:\d+)?(\/[^\s]*)?/",$mojiretu2_2)){ preg_match_all("/(http|https):\/\/[-\w\.]+(:\d+)?(\/[^\s]*)?/",$mojiretu2_2,$pattarn2); foreach ($pattarn2[0] as $key2=>$val2){ $replace2[] = "<a href='".$val2."' target='_blank' style='font-size:0.9em;'>".$val2."</a>"; } $mojiretu2_2 = str_replace($pattarn2[0],$replace2,$mojiretu2_2); } else if(preg_match("/'.preg_quote($keyword_start).'.*'.preg_quote($keyword_end).'/",$mojiretu2_2)){ preg_match_all("/'.preg_quote($keyword_start).'.*'.preg_quote($keyword_end).'/",$mojiretu2_2,$match); foreach ($match[0] as $key3=>$val3){ $futoji[] = "<span style='font-weight:bold;'>".$val3."</span>"; } $mojiretu2_2 = str_replace($match[0],$futoji,$mojiretu2_2); } return $mojiretu2_2; } } $mes2_2 = change2($mojiretu2_2);
###試したこと
関数を2つ別のに分けて、
$mes2_2 = change2($mojiertu2_2).change3($mojiretu2_2);
としてみたら、文字列が太字にはなったのですが、URLの自動リンクがきかないのと、2重書き込みみたいなことになってしまいました。
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/02 04:40
2016/05/02 05:21 編集
2016/05/02 05:35