質問 > フロント機能 > 商品検索で数字の全角と半角を区別しない方法は? |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
popo |
投稿日時: 2010/9/6 0:03
対応状況: −−−
|
長老 登録日: 2008/10/1 居住地: 投稿: 189 |
商品検索で数字の全角と半角を区別しない方法は? EC-CUBEバージョン 2.3.0
PHPバージョン PHP 4.4.9 DBバージョン PostgreSQL 7.3.4 お世話になっております。 商品検索で、数字を入力する時に全角と数字と半角の数字を区別せずに検索する方法はないでしょうか? 例えば、商品名が「ああ001」の場合、半角の「001」で検索すれば、検索で出てきますが、全角の数字「001」で検索すると検索に該当しません。 全角や半角で数字を入力した場合でも、検索にひっかける事はできないでしょか? 商品名の数字が全角でも、半角数字で入力した場合や、その逆など。 アドバイスをお願い致します。 |
55eccube |
投稿日時: 2010/9/6 5:23
対応状況: −−−
|
長老 登録日: 2010/8/18 居住地: 東京 投稿: 222 |
Re: 商品検索で数字の全角と半角を区別しない方法は? 商品名については、半角数字で登録するという運用ルールで登録するようにしておき、検索時に入力された文字に対して、
mb_convert_kana()の関数を利用して、 半角に変換してから検索をかけるようにしては、 いかがでしょうか。 |
popo |
投稿日時: 2010/9/6 8:42
対応状況: −−−
|
長老 登録日: 2008/10/1 居住地: 投稿: 189 |
Re: 商品検索で数字の全角と半角を区別しない方法は? ご回答ありがとうございます。
私はPHPには詳しくないのですが、「mb_convert_kana()」と言う関数が使われていると言う事ですね。 いろいろと調べてみたら、「mb_convert_kana()」のオプションの箇所に「a」を付け加えれば、全角数字が半角数字に変換されるのが分かりました。 ですが、「mb_convert_kana()」がどこにあるのか分かりません。 どのファイルに記述されているのでしょうか(-_-? アドバイスをお願い致します。 |
55eccube |
投稿日時: 2010/9/6 8:55
対応状況: −−−
|
長老 登録日: 2010/8/18 居住地: 東京 投稿: 222 |
Re: 商品検索で数字の全角と半角を区別しない方法は? mb_convert_kanaはデフォルトでは、
記述されていませんので、追記する必要があります。 ブロックで表示されている 検索の部分で、区別させずに検索させたいということでしょうか。 |
nanasess |
投稿日時: 2010/9/6 10:02
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: 商品検索で数字の全角と半角を区別しない方法は? PHP5.0以降でないと使用できないので参考にならないかもしれませんが, UNICODE の正規化というスマートな解決方法もあります.
http://codezine.jp/article/detail/2668 |
AMUAMU |
投稿日時: 2010/9/6 11:16
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: 商品検索で数字の全角と半角を区別しない方法は? ちなみにPHP5.3以上の環境ではUnicode正規化用にnormalizer_normalize関数をpeclにて組み込む事が可能です。
PostgreSQLでPL/Perlが使える環境であれば、SQL内だけで完結させることも出来るかと思います。
|
popo |
投稿日時: 2010/9/7 0:53
対応状況: −−−
|
長老 登録日: 2008/10/1 居住地: 投稿: 189 |
Re: 商品検索で数字の全角と半角を区別しない方法は? アドバイスありがとうございます。
PHP4.49なので、UNICODEの正規化ができないので、「mb_convert_kana」で対応した方が良さそうです。 と言うより、PHP5以降であってもUNICODEを正規化させるのに自信がないです(-_-; お客さんは、検索ブロックで表示されている欄に入力して検索するので、検索ブロックの入力フォームで、全角と半角を区別させずに検索できれば良いと思っています。 携帯サイトの場合は、全角カナで入力しても半角カナで表示されるので、パソコンからの検索も全角数字を半角数字として検索できるようにしたいです。 デフォルトでは記述されていないみたいなので、どのファイルのどの箇所に記述して良いのかも分かりません。 アドバイスをお願い致します。 |
seasoft |
投稿日時: 2010/9/7 1:10
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7369 |
Re: 商品検索で数字の全角と半角を区別しない方法は? 最新コミュニティ版でのソース確認ですが・・・
LC_Page_Products_List#lfLoadParam かな。 $this->arrSearchData['name'] = $this->arrForm['name']; あたりとか。 他には、事前に(コンストラクタなどで) $_GET['name'] を直接書き換えるという荒業も。 # しかし、この部分のロジックは、共通モジュールの入力チェックを使っていないんですね・・・ 使っていれば、パラメータで簡単に設定できるのに・・・
|
popo |
投稿日時: 2010/9/9 8:16
対応状況: −−−
|
長老 登録日: 2008/10/1 居住地: 投稿: 189 |
Re: 商品検索で数字の全角と半角を区別しない方法は? アドバイスをありがとうございます。
「LC_Page_Products_List.php」の中の「// 商品名検索条件」のあたりに、下記のように記載してみました。 良く分からないので、いろいろと試してみました。 $_POST['name'] = mb_convert_kana($_POST['name'] ,"n"); $_GET['name'] = mb_convert_kana($_GET['name'] ,"n"); $arrSearch['name'] = mb_convert_kana($arrSearch['name'] ,"n"); $arrSearchData['name'] = mb_convert_kana($arrSearchData['name'] ,"n"); パソコン用の検索ブロックの商品名の入力欄に、全角の数字を入力してみると、検索結果で表示される商品検索ブロックの中の商品入力欄には、全角数字から半角数字に変換されていましたが、検索結果は変わりませんでした。 検索結果に表示される時に、全角数字から半角数字に変換されているみたいで、検索する時に全角数字から半角数字に変換してから、検索しているという訳ではないようです。 検索時に変換するのは難しいのでしょうか? アドバイスをお願い致します。 |
AMUAMU |
投稿日時: 2010/9/9 17:35
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: 商品検索で数字の全角と半角を区別しない方法は? ちょっと2.3.0でのコードを確認してないので、具体的な場所が分からないですが、lfDispProductsListに渡す前に変換処理をする必要がありますが、そうなっていますか?
|
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |