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