thinkphp網站開發之分頁參數亂碼解決 - ManBetX万博全站app網絡
400-800-9385
網站建設資訊詳細

thinkphp網站開發之分頁參數亂碼解決

發表日期:2022-01-18 16:56:25   作者來源:ManBetX万博全站app網絡   瀏覽:323   標簽: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
 
如沒特殊注明,文章均為ManBetX万博全站app網絡原創,轉載請注明來自https://www.engstuff.com/news/6332.html
開發相關公司評論
  • 係統實現對OFD文檔的閱讀與OFD加工的相關操作。閱讀包括頁麵瀏覽,如放大縮小檢索、旋轉等;以及自定義元數據、縮略圖、附件、注釋、多文件、多版本等查看功能;加工上包括...
    安康商城小程序開發公司
  • 一鍵排版功能可按照網民的閱讀習慣對文章版本格式進行自動設置,包括:自動調整字距、行距、段距、文字首行縮進;快速消除文章中的空白行;圖片、視頻、Flash、表單等自動居中。通過一鍵排版...
    榆林小程序商城開發公司