我正在为我的PHP网站创建一个搜索服务,我想知道其他人是如何智能地解析基于引号(以及将来可能还有其他符号)的搜索词的。
换句话说,搜索术语螺丝刀锤子可能会产生一系列‘螺丝起子’,‘锤子’,但是“亚麻头螺丝起子河”锤子可能会产生‘亚麻头螺丝刀’,‘锤子’。
我知道我可以在一个草率的循环中完成这个任务,但是我确信PHP有内置的东西来处理这个问题。
发布于 2010-10-05 20:48:57
最后,我使用了strtok,按照这个以前的员额
发布于 2010-10-05 16:57:01
尝试使用拆分
类似于:
/* $search_term:
* "flathead screwdriver" hammer -nails
*/
$terms = preg_split("/[\s]*\\\"([^\\\"]+)\\\"[\s]*|[\s]+/", $search_term);
/* $terms = array(
* 0 => "flathead screwdriver"
* 1 => "hammer"
* 2 => "-nails"
*/
$exclude = array();
foreach($terms as $term){
if(strpos($term, '-') == 0)
array_push($exclude, substr($term, 1));
}
/* $exclude = array(
* 0 => "nails"
*/我唯一没有包括的是从$terms数组中删除“钉子”。我把这个留给读者做练习
https://stackoverflow.com/questions/3864529
复制相似问题