服务热线 400-660-8066

保定网站建设
首页 站内资讯

保定网站建设

站内资讯
保定网站建设 / 站内资讯 / 产品资讯 / 正文

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

来源: All文章
发布时间:2023-03-29 14:02:33

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

  formclass=method=getaction={:urlrotue('Search/index')}

  pclass=header-form

  inputtype=textclass=header-textname=qid=qplaceholder=请输入搜索关键词

  ainputtype=submitclass=header-subvalue=/a

  /

  /form

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

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

  然后只需要这样修改:

  privatefunctionurl($page){

  returnstr_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-parameteras$key=$value){

  $paramStr=$paramStr.''.$key.'='.$value;

  }

  $paramStr=substr($paramStr,1,strlen($paramStr));

  $this-url=U(ACTION_NAME).(strpos(U(),?)?'':'?').$paramStr;

  得到的地址是这样的:

* 文章来源于网络,如有侵权,请联系客服删除处理。
在线 咨询

添加动力小姐姐微信

微信 咨询

电话咨询

400-660-8066

我们联系您

电话 咨询
微信扫码关注动力小姐姐 X
qr