美文网首页
PHP实现SQL的%like%形式搜索

PHP实现SQL的%like%形式搜索

作者: 云龙789 | 来源:发表于2018-03-19 17:04 被阅读65次

    原理
    1.获取请求文字$search的字符长度(注意:一个文字占三个字符)

    2.把要查询的语句$words,用str_split ($string, $split_length = 1)做字符串切割

    1. 切割之后做遍历,值与请求文字$search比较,正确则表示语句中存在要查找的文字

    4.如果没找到,则从第二个文字开始做切割匹配。直到匹配成功为止

    测试数据

    $test_list = [
        ['test_name'=> '爱看啥的的',  'test_id'=> '1'],
        ['test_name'=> '阿达撒发',  'test_id'=> '2'],
        ['test_name'=> '是发送到吃饭',  'test_id'=> '3'],
        ['test_name'=> '广东省反倒是',  'test_id'=> '4'],
        ['test_name'=> '徐达热网示范区',  'test_id'=> '5'],
        ['test_name'=> '分析师范生',  'test_id'=> '6'],
    ];
    
    $api_test_list = [
        'test' => $test_list,
    ];
    

    搜索函数

    /** 遍历切割文字
     * @param $words 需要匹配的文字
     * @param $split_num 每几个字符做一次切割,一个中文文字是3个
     * @param $search 需要匹配的文字
     * @return bool  true是匹配成功,false是匹配失败
     */
    function word_split($words,$split_num,$search)
    {
        if (strlen($words) <3) return false;  // 如果小于3个字符,则表示遍历完毕,返回false
        foreach (str_split($words,$split_num) as $value){
            if ($search == $value) return true;
            // 如果没有取到值,从第二个字开始切割
            return word_split(substr($words,3),$split_num,$search);
        }
        return false;
    }
    

    打印结果

    图片.png
    • 还有一种更简单的方法就是strstr或者strpos这类函数,查找在某个字符串中出现的位置,是否出现
    function get_search_game($search,$data_list)
    {
        $search = trim($search);  // 查询内容
        $search_res = [];   // 搜索结果
        foreach ($data_list as $number){
            // 函数搜索字符串在另一字符串中的第一次出现。
            if (strstr($number['data_name'],$search)){
                // 如果匹配成功
                $search_res[] = $number;
            }
        }
        return $search_res;
    }
    

    相关文章

      网友评论

          本文标题:PHP实现SQL的%like%形式搜索

          本文链接:https://www.haomeiwen.com/subject/vdppqftx.html