2006-04-12 Wed

NP_ChoppedDisc|タグを半角スペースに変換

Nucleus の検索結果を、検索ワード前後で切り出して表示してくれる、大変ありがたい「NP_ChoppedDisc」ですが、検索結果によっては文字列の区切りが無くなり表示が崩れる場合がありました。まあそれは別によかったんですが、例えば当サイトの「使用プラグイン」ページの様に半角英数字がくっついて表示されると意味がまったくわからないので、HTML タグを削除するのではなく、半角スペースに置換するように改造してみました。

検索ワードが見つかった際、その記事から HTML タグを削除する処理は、doTemplateVar 関数内で行われているようです。おそらく 223 行目あたりにある次の個所です。

$syndicated = strip_tags($item->body);
$syndicated .= strip_tags($item->more);
$syndicated = preg_replace("/[\r\n]/","",$syndicated);

記事の本文と続き部分から「strip_tags」を利用してタグを除去し、改行も削除しているようです。ここでタグを除去するのではなく半角スペースに置換するため、次のように記述します。

// pushman
// $syndicated = strip_tags($item->body);
// $syndicated .= strip_tags($item->more);
$pattern = "/<\/?[^>]*>/";
$replacement = " ";
$syndicated = $item->body;
$syndicated .= $item->more;
$syndicated = preg_replace($pattern, $replacement, $syndicated);

// $syndicated = preg_replace("/[\r\n]/","",$syndicated);
$syndicated = preg_replace("/[\r\n]/"," ",$syndicated);
$syndicated = preg_replace("/(\s)+/"," ",$syndicated);
// namhsup

コメントアウトしているのは最初の記述と自分が改造したところの目印です。「NP_OnlyImg」のコードを流用し HTML タグを半角スペースに置換するようにしました。そして、改行コードも削除するのではなく同じく半角スペースへと変換します。このままだと連続した半角スペースができてしまう場合があるので、連続する半角スペースを一つにまとめています。

以上で意図しない半角英数字の連続は避けられると思いますが、正規表現がちょっと自信ありません。ま、今のところは動いてますので大丈夫と思いますが。あとは検索ワードの前後の文字数をコンパクトにまとめたいのですが、そこの部分は僕ではさっぱり理解できなかったので、あっさり諦めました。その内解読したいと思います。

2006-04-12 Wed / Category - Nucleus

このページの先頭に戻る

Copyright 2006 - Heartfield