PHPで作られている全文検索エンジン「sphider」(plusではない)で日本語化の対応をする場合の修正点です。
- 言語ファイルを用意します。 languages/jp-language.php というファイルをen-language.php をコピーして編集します。$sph_messages の連想配列を記述するだけであまり分量が多くないのでUTF8で保存します。 sphider/settings/conf.php を修正します。 < $language = ‘en’; > $language = ‘jp’; 管理画面から選択できるようにするには admin/configset.php を修正します。 > <option value=”jp” <?php if ($language == “jp”) echo “selected”;?>>Japanese</option>
- デフォルトのテンプレートを修正します。 デフォルトのテンプレートファイルは templates/standard/header.html で METAタグにISO-8859-1がセットされているので、UTF8に変更します。 < <meta http-equiv=”content-type” content=”text/html; charset=ISO-8859-1″> > <meta http-equiv=”content-type” content=”text/html; charset=utf8″> 管理画面(admin/admin.php)にもあります。
- 全角スペースを区切りとして認識させます。 日本語のキーワード検索として不可欠な機能ですので、include/searchfuncs.php で対応させてみます(72行目を追加)。 71 $a = strtolower(preg_replace(“/[ ]+/”, ” “, $a)); 72 $a = preg_replace(“/\xe3\x80\x80/”, ” “, $a); (\xe3\x80\x80 は UTF8での全角スペース)
- タイトルが文字の途中で切れてしまう問題の対処 include/searchfuncs.php の中に文字列を substrでブッタ切ってしまっているのが原因です(文字長も直接記述されている)。 substrやstrlenなどマルチバイト対応のものに書き換えておきます。