バージョン選択

フォーラム

メニュー

オンライン状況

131 人のユーザが現在オンラインです。 (118 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 131
もっと...

サイト内検索

質問 > フロント機能 > 商品検索で数字の全角と半角を区別しない方法は?

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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内だけで完結させることも出来るかと思います。


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

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'] を直接書き換えるという荒業も。


# しかし、この部分のロジックは、共通モジュールの入力チェックを使っていないんですね・・・ 使っていれば、パラメータで簡単に設定できるのに・・・


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

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に渡す前に変換処理をする必要がありますが、そうなっていますか?


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は90,046名です
総投稿数は110,296件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1678
8
red
1570
9
mcontact
1347
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.