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


关键词

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解决搜索中文翻页后条件失效的问题,本文就介绍这么多,希望对大家有所帮助!

 

文章的版权

洪哥写文章很苦逼,如果本文对您略有帮助,点击感兴趣的广告支持洪哥!万分感谢!本文属于“洪哥笔记”原创文章,转载请注明来源地址:ThinkPHP解决搜索中文翻页后条件失效的问题:http://www.splaybow.com/post/thinkphp-sousuo-zhongwen-fanye-1148.html

关注与收藏

如果您在服务器运维、网络管理、网站或系统开发过程有需要提供收费服务,请加QQ:115085382!十年运维经验,帮您省钱、让您放心!
亲,如果有需要,先存起来,方便以后再看啊!加入收藏夹的话,按Ctrl+D


« PHP获取文件创建时间

相关文章: