网站开辟中常常会碰到整站搜刮功效,而搜刮以后会出现大批的数据,而每每都是行使分页的方式去展示这些数据,当搜刮的字段中含有中文时,就能够致使翻页出现乱码,致使翻页生效。
搜刮行使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;
获得的地点是如许的: