[Tep-j-general] Re: (DVD or CD) 暴走特急 でのエラーの回避方法は?

アーカイブの一覧に戻る

hamada bungu****@leo*****
2004年 9月 24日 (金) 12:44:30 JST


こんにちわ。

On Thu, 23 Sep 2004 12:41:16 +0900
"Max999" <max99****@mwc*****> wrote:

> いろいろやってるんですが、、
> 完全一致検索、" " もあり、私には一筋縄ではいかないようです。

ちょっとやってみましたが、確かにちょっとややこしいかもしれないですね。

失笑を覚悟で「一応動いたコード」を出します。

$keywd = str_replace(" "," ",$keywd);
$keywd = eregi_replace(" and "," ",$keywd);
$keywd = ereg_replace(" +"," ",trim($keywd));
$keywd = eregi_replace(" or ","====================================",$keywd);
$keywd = str_replace(" "," and ",$keywd);
$keywd = str_replace("===================================="," or ",$keywd);

・全角空白を半角化して
・andがあると邪魔なので半角空白に置換して
・2つ以上並んだ空白を1つにまとめて
・orを「絶対無さそうな文字列」に一旦置換して
・半角空白をandに置換
・「絶対無さそうな文字列」をorに書き戻す

上記のアルゴリズムでなんとか所期の動作をしてるように見えます。

(DVD or CD)      暴走特急  とほほ

 変換↓

(DVD or CD) and 暴走特急 and とほほ

チェックが不十分なので、予想外の文字列を放り込まれると期待しない置換をし
てしまうかもしれません。

たぶんこんなダサいことしなくてももう少しスマートな解決法があると思うんで
すが、文句なしの“ど”素人であるワタシは

「動けばいい」

ということで恥知らずなコードを書いてしまいました。

でも、コレをadvanced_search.phpに組み込んでおけば

「空白区切りで複数単語を使った検索ができる」

ってことですよねぇ。それは…悪くないかも。

お目汚し申し訳ないです。

はまだ






Tep-j-general メーリングリストの案内
アーカイブの一覧に戻る