J9国际集团|Home

135-2716-3909
网站建设资讯详细

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

发表日期:2026-07-20 16:56:25   作者来源:J9国际集团   浏览:2651   标签:thinkphp    网站开发    
网站开发□□中经常会□□遇到整站□□□搜索功能,而搜索之□□后会出现□□大量的数□□□□据,而通常都□□□□是使用分◥页的形式▼去展示这□□□些数据,当搜索的□□字段中含□□□□有中文时,就可能导□□致翻页出□□□现乱码,导致翻页□□失效。

网站导航

搜索使用form表单提交的方式,前端代码:
<form class="" method="get" action="{:urlrotue('Search/index')}">
                        <div class="header-form">
                            <input type="text" class="header-text" name="q" id="q" placeholder="请输入搜索关键词">
                            <a><input type="submit" class="header-sub" value=""></a>
                        </div>
                        </form>

前端网页

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

页面URL地址
程序代码

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

PHP代码

然后只需要这样修改:

PHP代码2

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);
得到的正常的地址应该是这样的:

url2

在后续的□□□使用过程□□□□中又发现,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;
得到的地址是这样的:
url地址2
 
如没特殊注明,文章均为J9国际集团原创,转载请注明来自https://www.nzweibaum.com/news/6332.html