1

私は自分の PHP Web サイト用の検索サービスを作成している最中で、引用符 (および将来的には他の記号) に基づいて検索用語をインテリジェントに解析する方法について、他の人がどのように考えているのか疑問に思っていました。

言い換えると、検索語のスクリュードライバー ハンマーは ['スクリュードライバー', 'ハンマー'] の配列を生成する可能性がありますが、「フラットヘッド スクリードライバー」ハンマーは ['フラットヘッド スクリュードライバー', 'ハンマー'] を生成する可能性があります。

ずさんなループでこれを達成できることはわかっていますが、PHPにはこれを処理するための組み込み機能があると確信しています。

4

2 に答える 2

1

preg_splitを使用してみてください

何かのようなもの:

/* $search_term:
*  "flathead screwdriver" hammer -nails
*/

$terms = preg_split("/[\s]*\\\"([^\\\"]+)\\\"[\s]*|[\s]+/", $search_term);

/* $terms = array(
*      0    =>    "flathead screwdriver"
*      1    =>    "hammer"
*      2    =>    "-nails"
*/

$exclude = array();

foreach($terms as $term){
    if(strpos($term, '-') == 0)
        array_push($exclude, substr($term, 1));
}

/* $exclude = array(
*      0    =>    "nails"
*/

私が含めなかったのは、$terms 配列から「釘」を削除することだけです。これは読者の演習として残しておきます =)

于 2010-10-05T16:57:01.730 に答える
0

この前の投稿に従ってstrtokを使用することになりました

于 2010-10-05T20:48:57.547 に答える