• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

ThinkPHP解决搜索中文翻页后条件失效的问题

php 海叔叔 4年前 (2021-05-31) 98次浏览 已收录 0个评论

关键词
ThinkPHP 搜索 中文 翻页 条件失效

摘要

本文介绍在ThinkPHP框架中,搜索输入中文时,如果结果不止一页,翻后面页时,搜索条件失效的问题。

ThinkPHP的3.2版本有这个问题。比如搜索会员姓名:张。姓张的很多,出来几十页,第一页显示都是姓张的,但翻第二页,或其他页,出来的就乱了,完全不是搜索“张”应该出现的结果。

其实这个问题,核心是编码的问题。具体原理我就不详细说了。

解决办法如下:

要做两处修改,1、修改ThinkPHP\Conf\tags.php,在“app_begin”一项下面加一句:”Getcoding”。即原来是:
‘app_begin’ => array(
‘ReadHtmlCache’, // 读取静态缓存
),
改成
‘app_begin’ => array(
‘ReadHtmlCache’, // 读取静态缓存
‘Getcoding’, // 编码
),

2、在ThinkPHP\Lib\Behavior目录下加一个文件:GetcodingBehavior.class.php,内容如下:

<?php
/**
* $_GET 编码解决url中文乱码问题
*
*/
class GetcodingBehavior extends Behavior{
    
    public function run(&$params) {

        foreach ($_GET as $k=>$v){
            if(!is_array($v)){
                if (!mb_check_encoding($v, 'utf-8')){
                    $_GET[$k] = iconv('gbk', 'utf-8', $v);
                }
            }else{
                foreach ($_GET['_URL_'] as $key=>$value){
                    if (!mb_check_encoding($value, 'utf-8')){
                        $_GET['_URL_'][$key] = iconv('gbk', 'utf-8', $value);
                    }
                }
            }
        }

    }
}

好了,关于ThinkPHP解决搜索中文翻页后条件失效的问题,本文就介绍这么多,希望对大家有所帮助!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:ThinkPHP解决搜索中文翻页后条件失效的问题
喜欢 (7)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址