0

ユーザーがアイテムを検索するか、括弧内の価格帯で検索を変更できる検索機能を開発したいと考えています。つまり、車を探している場合、車を入力してデータベース内のすべての車を受け取るか、車 (100, 299) または車 (100, 299) を入力してデータベース内の車のみを受け取ることができます。価格帯は 100 ~ 299 です。

以前は 3 つの異なる Explode 関数呼び出しを行っていましたが、これは面倒で、途方もなく見栄えがよくありませんでした。また、角かっこを配列に入れて、それを検索された単語と比較しようとしました (単語は基本的に文字の配列です) が、うまくいきませんでした。最後に、strpos と substr について調べてきましたが、strpos は最初に出現した文字を返し、substr は特定の出現後に指定された長さ内の文字を返すため、要件に適合していないようです。

たとえば、 strpos の問題は、ユーザーがブラケットを入力するだけで (およびなしで)、誰が何を知っているかで検索機能を呼び出すことができることです。たとえば、substr の問題は、価格帯が大きく変動する可能性があることです。

4

2 に答える 2

0

preg_match を使用して検索文字列を解析できます - 問題が発生している部分だと思います。

if (preg_match('/car ?\(([^,]+), ?([^\)]+)\)/', $search_text, $matches)) {
    $low_price = $matches[1];
    $high_price = $matches[2];

    //do your price filtering here
}

正規表現を少し調整する必要があるかもしれません。文字クラスで括弧をエスケープする必要があるかどうかは覚えていません。

于 2013-04-11T16:32:39.700 に答える