CGI-BBS > データベース > 簡易データベース > 完全な一致でなくてもヒット - AAaa、単語の一部


カレッヂ
カレッヂ


質問者 Wackey  投稿日 8/30(木) 11:17:59
初心者の方でも、全角半角、大文字小文字を気にせずに検索してもらえるようにしたいです。
AAaa を同じ文字として検索できるようにするのは、難しい作業でしょうか?

更に、検索キーに入力した単語が含まれているデータを、全てヒットさせる、
つまり、Get で検索したら、Get Down Tonight がヒットするようにしたいです。

お手数をお掛けして申し訳ありませんが、アドバイスをお願いします。

http://wackey.omosiro.com/beat/index.html
http://wackey.omosiro.com/Bank/index.html
回答者 しあわせのツボ  [削除]  投稿日 8/30(木) 18:42:05
現在のスクリプトがどうなっているのかわからないので、抽象的な話になりますが。

まず部分一致ですが、
if ($AGE eq $FORM{'AGE'}) { ; } else { next; }
のような所を
if ($AGE =~ /$FORM{'AGE'}/) { ; } else { next; }
とすれば可能です。
また、これによって大文字小文字の同一視が簡単になります。
if ($AGE =~ /$FORM{'AGE'}/i) { ; } else { next; }
とするだけです。

ただ、いわゆる全角文字と半角文字は根本的に異なるものなので、事前に全角を半角に変換し統一してから検索する必要があります。
jcode::trが使えるとは思いますが、これは未完成の機能で制限が多いため、ちょっと説明しきれません。
jcode.plのドキュメントを読むか、それでもわからなければ「jcode'tr」でweb検索して下さい。
個人的には、今のユーザはかなり教育されている(URLやメールアドレスは半角しか受け付けない)ので、そこまで親切にする義理もないと思っています。

# そもそもWinは全角と半角が見分けづらいから嫌い…ぶつぶつ。
質問者 Wackey  [削除]  投稿日 9/2(日) 03:13:59
アドバイス、ありがとーございます。おかげさまで当初の目的は達せられました。

> 個人的には、今のユーザはかなり教育されている(URLやメールアドレスは半角しか受け付けない)ので、
> そこまで親切にする義理もないと思っています。

おっしゃる通りですね。納得です。

ただ、ここまで来ると欲が出てくるもので、新着順表示やら表示件数の指定など、
盛り込みたい機能の候補が他にもいくつか挙がってきました。
また質問させて頂くこともあるかと思いますが、お時間の許す限りお付き合い頂ければ助かります。

返信(回答)する


Web裏技