• ベストアンサー

文字検索

22歳。新人PGです。 さっそく質問させていただきます。 入力された文字を元に、CSVファイルの中の文章に含まれるものを 検索し、表示するという機能を作成してるんですが、 半角カタカナを入力された場合、意としない文字まで検索に ひっかかってしまします。 ≫CSVファイルの中身 123,あああいいいいうう 124,あああああおおおおお 125,ぽぽぽいいいいえええ ・ ・ ・ ex. 「カレー」と半角カタカナで入力すると、 「カレー」という文字が含まれる文章は検索でひっかかりますが、 「学生レーサー」というものまでもひっかかってしまいます。 文字コードが関係しているのでしょうか? 何か良い解決方法があればお願い致します。 ちなみに、CSVファイル及びPHPソースファイルは全てSJISで、 preg_match("/入力値/",$sentence)で検索しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

マルチバイト文字列のマッチ処理には、mb_strpos や mb_ereg を使用してください。 全角カナやEUCに変換しても、問題は解決しません。 全角文字(SJIS)でダメな例: preg_match("/賜/", "虫虫"); EUCでダメな例: preg_match("/鄰/", "虫虫");

その他の回答 (2)

  • NINJA104
  • ベストアンサー率43% (133/306)
回答No.2

CSVファイルから読み込んだレコードと入力された文字列の両方を一旦EUCに変換してからpreg_match()を行なってみてください。 大抵はそれだけでイケると思います。 SHIFT_JISのまま行なうと質問者様の様な意図しない結果が発生します。

noname#22928
noname#22928
回答No.1

自分は元から半角カナが信用ならないので、全角に変換して保存し検索時も半角を全角に変換してから検索とかにしています。

関連するQ&A