oscommerce(v2.2RC2a)
oscommerce(v2.2jMS1)



タイトルのようなキーワードで訪問される方が多いので書いておきたいと思います。

ずっと前にもを書いたのですが、引退後に暇を持て余した団塊さんや携帯端末の機能充実によるユーザー拡大で、半角カナ文字や全角スペースなど、あまり歓迎できない入力が増えてくると思います。

で、対策ですが、PHPのmb_convert_kanaという関数を使うのが簡単で一般的だと思います。
ただ、海外のレンタルサーバーの場合は入っていない場合もありますので、RC2aを独自に日本語化して使っている場合はサーバー管理者に頼んで導入してもらうか、PHP SAMPLES & TIPSさんのjcode.phpmbstring_wrapper.php(jcode.phpをmbstringライクに使用する)をms1から移植したり、カリフォルニアワインのお勝手口さんのmbstringエミュレータを導入するなどして対応します。

mb_convert_kanaについて詳しくはココを見てもらうとして、問題となる文字は半角カナ(半角濁点)・全角英数・全角スペースなので、
$string = mb_convert_kana($string, "asKV");
と、こんな感じで変換する事になります。

該当個所は、*icon_doc*catalog/includes/functions/general.phpのfunction tep_parse_search_string()で、
$search_str = trim(strtolower($search_str));
を、
$search_str = mb_convert_kana(trim(strtolower($search_str)), "asKV");
のように書き換えることで完了です。

この手の変換は良く使うかもしれないので、*icon_doc*catalog/includes/functions/general.php内にこんな感じで、
////
// Convert inputs optimization
// MKSMK_ADD
function tep_inputs_optimization($string) {
return mb_convert_kana($string, "asKV");
}
関数としてまとめておいても良いかもしれませんね。

最後に、商品登録時も英数は半角、カナ文字は全角になど厳密にルール付けをしておかないといけないので注意してくださいね:-P

注意)作業前にgeneral.phpのバックアップを取ってください。しかも、ローカルでしっかり管理していないとadmin側のgeneral.php(名前同じです)と取り違ったりして面倒になったりします。作業後、保存する時にはファイルネームに日付を付加するなどしましょう(例:general.php20100611)。