1

重複の可能性:
PHP 配列の各項目にプレフィックスを追加する

ブール モードの全文検索を使用しようとしています。

ユーザーが 2 つ以上の単語を入力すると、このように作成されます。

Search Keyword :   Apple Macbook Air 

Result :   +Apple +Macbook +Air

そのため、これを実現するためにphpコマンドを作成しましたが、機能しませんでした。

$ArrayKeywords = explode(" ", $b_keyword);
for($i = 0; $i < sizeof($ArrayKeywords); $i++)
$array_keyword = '+"$ArrayKeywords[$i]" ';

これを実現する方法を教えてください。

4

5 に答える 5

4

できる(デモ

echo preg_replace('(\w+)', '+$0', 'Apple Macbook Air');
于 2012-05-23T07:16:49.740 に答える
3

なぜこれをしないのですか?

$keyword = '+' . trim(str_replace(' ',' +',$b_keyword));
于 2012-05-23T07:15:30.527 に答える
2

文字列内の変数がどのように機能するかについて、少し誤解があるようです。

次のように、単一引用符内はそのまま解析され、二重引用符内では変数の内容が出力されることを知っているかもしれません。

$foo = 'bar';

echo 'foo: $foo';    // result:  foo: $foo
echo "foo: $foo";    // result:  foo: bar

ただし、2 つの方法を組み合わせることはできません。単一引用符の中に二重引用符を入れても、変数の内容は出力されません。二重引用符は、文字列全体が二重引用符で区切られている場合にのみ機能します。したがって、以下は機能しません。

echo 'foo: "$foo"';  // result:  foo: "$foo"

これをケースに拡張すると、一重引用符を二重引用符に置き換えて、内側の二重引用符を削除できます。

$array_keyword .= "+$ArrayKeywords[$i] ";

また、新しい単語を変数 ( .=) に連結する必要があることにも注意してください。そうしないと、ループごとに変数が上書きされます。

補足:配列をループするときは、foreachループよりもループを使用する方がはるかに簡単です。for

$ArrayKeywords = explode(" ", $b_keyword);
$array_keyword = '';
foreach( $ArrayKeywords as $keyword ) {
    $array_keyword .= '+$keyword ";
}
于 2012-05-23T07:25:43.207 に答える
2

タブ、改行、スペースなどに必要な場合。

echo preg_replace('(\s+)', '$0+', ' Apple Macbook Air');
//output: +Apple +Macbook +Air
于 2012-05-23T07:25:47.483 に答える