PHP,爆炸多个单词并用字符作为前缀

时间:2012-05-23 07:10:59

标签: php

  

可能重复:
  Add a prefix to each item of a PHP array

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

如果用户输入两个以上的单词,则假设这样做。

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]" ';

你能告诉我如何实现这个目标吗?

5 个答案:

答案 0 :(得分:4)

也可以(demo

echo preg_replace('(\w+)', '+$0', 'Apple Macbook Air');

答案 1 :(得分:3)

为什么不这样做:

$keyword = '+' . trim(str_replace(' ',' +',$b_keyword));

答案 2 :(得分:2)

不需要for在那里循环

// trims off consecutive spaces in the search term
$b_keyword = preg_replace('/\s+/', ' ', $b_keyword); 
$ArrayKeywords = explode(" ", $b_keyword);
echo '+' . implode(' +', $ArrayKeywords);

答案 3 :(得分: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 ";
}

答案 4 :(得分:2)

如果你想要标签,换行符,空格等

echo preg_replace('(\s+)', '$0+', ' Apple Macbook Air');
//output: +Apple +Macbook +Air