• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
车车大人
博客园    首页    新随笔    联系   管理     

Tp3实现搜索后高亮显示(关键字标红)

//定义一个搜索的方法
    public function Search(){
        //如果传过来的值是空的,很可能会报错,所以做一个判断,如果传过来的值是空的,那就查询所有的信息
        //判断请求类型
        if(IS_GET){
            //接值
            $word = I('get.word');
            //拼接一下查询的条件
            $where['name'] = array('like',"$word%");

            $User = M('user'); // 实例化User对象
            $count      = $User->where($where)->count();// 查询满足要求的总记录数
            $Page       = new \Think\Page($count,5);// 实例化分页类 传入总记录数和每页显示的记录数(5)
            $show       = $Page->show();// 分页显示输出
            // 进行分页数据查询 注意limit方法的参数要使用Page类的属性
            $list = $User->where($where)->limit($Page->firstRow.','.$Page->listRows)->select();
            foreach ($list as $k=>$v){
                if($v['name']){
                    $v['name'] = preg_replace("/($word)/i","<b style=\"color:red\">\\1</b>",$v['name']);
                }

                $NewList[] = $v;
            }
            $this->assign('count',$count);
            $this->assign('data',$NewList);// 赋值数据集
            $this->assign('page',$show);// 赋值分页输出
            $this->display('Lists'); // 输出模板


        }else{
            $this->error('非法操作');
        }

    }

 

像上述那种做法在出现查询字段为空的时候会出现乱码的现象,那么这个时候我们就需要添加一下js正则判断保证提交的数据不为空了

$NewList[] = $v;  在上述代码标红的地方我们赋值给了一个新的数组,完全可以 $list[$k]['name'] = $v;这样去写

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

如果想要一种稍微更好点的办法的话,可以考虑下面str_replace的用法,但是需要自己在html页面写个样式

//拼接一下查询的条件
                $where['name'] = array('like',"$word%");

                $User = M('user'); // 实例化User对象
                $count      = $User->where($where)->count();// 查询满足要求的总记录数
                $Page       = new \Think\Page($count,5);// 实例化分页类 传入总记录数和每页显示的记录数(5)
                $show       = $Page->show();// 分页显示输出
                // 进行分页数据查询 注意limit方法的参数要使用Page类的属性
                $list = $User->where($where)->limit($Page->firstRow.','.$Page->listRows)->select();

                foreach ($list as $k=>$v){
                    if($v['name']){
                        // pattern  要替换的关键字
                        //  replacement   要替换的内容
                        // subject  被替换的字符串
//                        $v['name'] = preg_replace("/($word)/i","<b style=\"color: red\">\\1</b>",$v['name']);
                        $str=str_replace("$word","<font>$word</font>",$v['name']);
                        $list[$k]['name'] = $str;
                    }
                }

                $this->assign('count',$count);
                $this->assign('data',$list);// 赋值数据集
                $this->assign('page',$show);// 赋值分页输出
                $this->display('Lists'); // 输出模板

这样的话,html页面就需要在head里面加一个style样式

<head>
    <meta charset="UTF-8">
    <title>列表</title>
    <style>
        font{
            color: red;
        }
    </style>
</head>

这样的话就避免了乱码!

通往牛逼的路上,在意的只有远方!
posted @ 2018-04-25 11:32  车车大人  阅读(938)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3