1

可能重复:
为 PHP 数组的每个项目添加前缀

我尝试使用布尔模式全文搜索。

如果用户键入两个以上的单词,它应该是这样的。

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

真的不需要在for那里循环

// trims off consecutive spaces in the search term
$b_keyword = preg_replace('/\s+/', ' ', $b_keyword); 
$ArrayKeywords = explode(" ", $b_keyword);
echo '+' . implode(' +', $ArrayKeywords);
于 2012-05-23T07:12:30.160 回答
2

我发现字符串中的变量如何工作存在一些误解。

您可能已经了解到,单引号内的任何内容都按原样解析,而双引号内的变量内容会打印出来,如下所示:

$foo = 'bar';

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

但是,您不能将这两种方法结合起来;将双引号放在单引号内不会打印变量的内容。双引号仅在整个字符串由它们分隔时才起作用。因此,以下内容将不起作用:

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 回答