我尝试使用布尔模式全文搜索。
如果用户输入两个以上的单词,则假设这样做。
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]" ';
你能告诉我如何实现这个目标吗?
答案 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