行业资讯

首页 > 新闻资讯 > 行业资讯 > thinkphp网站开发之分页参数乱码解决

thinkphp网站开发之分页参数乱码解决

2025-05-05 00:03:41   来源:   阅读:

网站开发中经常会遇到整站搜索功能,而搜索之后会出现大量的数据,而通常都是使用分页的形式去展示这些数据,当搜索的字段中含有中文时,就可能导致翻页出现乱码,导致翻页失效。
搜索使用form表单提交的方式,前端代码:









下面是页码出现乱码的地址,点击后无法跳转到第二页的内容:

查看了ThinkPHP\Library\Think\Page.class文件后发现代码是这样的

然后只需要这样修改:
private function url($page){
return str_replace(urlencode('[PAGE]'), $page, $this->url);
}
$request_url = $_SERVER["REQUEST_URI"];
if(!preg_match("/\/p\/\d+/", $request_url)) {
$request_url = str_replace(".html", '/p/'.urlencode('[PAGE]').'.html', $request_url);
}
$this->url = preg_replace("/\/p\/\d+\.html/", '/p/'.urlencode('[PAGE]').'.html', $request_url);

得到的正常的地址应该是这样的:

在后续的使用过程中又发现,URL在Apache上是/不会有问题,但是在IIS上用/会乱码,必须用?=这种格式才行或者到需要通过url?=传递参数时。
$this->parameter[$this->p] = '[PAGE]';
$paramStr="";
foreach($this->parameter as $key => $value){
$paramStr = $paramStr.'&'.$key.'='.$value;
}
$paramStr = substr($paramStr,1,strlen($paramStr));
$this->url = U(ACTION_NAME).(strpos(U(),"?")?'&':'?').$paramStr;

得到的地址是这样的:
本文《thinkphp网站开发之分页参数乱码解决》发布于君君营销文章,作者:admin,如若转载,请注明出处:/news/hyzx/65978.html,否则禁止转载,谢谢配合!

联系我们

18221295083
上海市浦东新区航头镇沪南公路4583号
上海市青浦区蟠龙路899号
18221295083
zhanglongfu@ijunjun.com
  • 联系我们
  • 关于我们
  • 二维码


    官方微信

    小程序
    返回
    顶部
    咨询

    扫描微信二维码,添加好友

    电话

    24小时电话:

    18221295083
    微信

    官方微信