[PHP-users 32614] phpで検索キーワードのハイライト処理
Masaaki Suga
suga @ tenrikyo.or.jp
2007年 9月 8日 (土) 13:53:58 JST
須賀です
phpで検索キーワードのハイライト処理をしたいのですが
今できているのは,一般的なやり方で,
検索語を<span class="hilite">・・・<span>にするようにしたものです
以下ソース
function hilight($str,$jyoken_arr) { // ハイライト用サブルーチン $strが元の文字列,$jyoken_arrが検索キーワードの配列
$jyoken_arr_preg=array();
$jyoken_arr_strong=array();
foreach ($jyoken_arr as $value) {
if (($value=="") or ($value==" ") or ($value==" ")) {continue;} // 検索キーワードが空白やnullの場合は何もしない
$jyoken_arr_preg[]="/".$value."/";
$jyoken_arr_strong[]="<span class=\"hilite\">".$value."</span>";
}
return preg_replace($jyoken_arr_preg, $jyoken_arr_strong, $str); // ハイライトのスタイルタグをつけて返す
}
※ $jyoken_arrは検索条件をばらばらにした配列です(複数キーワードAND検索対応)
しかし,これでは
<a href="xxxx">yyyy</a>
もし検索語がxxxにひっかるようなものだと,そこに
<span class="hilite"・・・が挿入され,htmlが正常に表示されなくなりました
そこで,htmlタグ内の検索語は無視するようにするには,このサブルーチンをどうすればいいのでしょうか?
正規表現は,いまだによくわからないので,どなたかアドバイスください
よろしくお願いします
PHP-users メーリングリストの案内