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

原理
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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 8,445评论 0 7
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,417评论 18 399
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 9,820评论 1 44
  • 4月20号 给上帝:亲爱的上帝,你赐给我足够的恩典,回复我感受爱的能力,你的能力和其大!偶尔想起以前总是抱怨,总是...
    辛亚玲阅读 1,292评论 0 0
  • 技术基础 操作系统 磁盘文件相关基础,文件描述符,文件打开选项等 进程,线程基本概念,进程创建销毁通讯等,线程创建...
    KKsenior阅读 2,981评论 0 0

友情链接更多精彩内容