代码之家  ›  专栏  ›  技术社区  ›  Dutchie432

用PHP智能解析用户搜索词

  •  1
  • Dutchie432  · 技术社区  · 15 年前

    我正在为我的PHP网站创建一个搜索服务,我想知道其他人是如何基于引号(以及将来可能的其他符号)智能地解析搜索词的。

    换句话说,搜索词 螺丝刀锤 可能会产生一组[“螺丝刀”、“锤子”],但 “平头熨平板”锤 可能会产生[“平头螺丝刀”、“锤子”]。

    我知道我可以在一个草率的循环中完成这个任务,但我相信PHP内置了一些东西来处理这个问题。

    2 回复  |  直到 15 年前
        1
  •  1
  •   stevendesu    15 年前

    preg_split

    /* $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"
    */
    

        2
  •  0
  •   Community Mohan Dere    9 年前
    推荐文章