PHP,分解多个单词并用字符作为前缀


PHP, explode multiple words and prefix them with a character

可能的重复项:
为 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]" ';

你能告诉我如何做到这一点吗?

也可以做(演示(

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

为什么不这样做:

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

真的不需要在那里for循环

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

我看到字符串中的变量如何工作有点误解。

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

$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 ";
}

如果你想把它用于制表符、换行符、空格等。

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