thinkphp網(wǎng)站開(kāi)發(fā)之分頁(yè)參數(shù)亂碼解決

2023-02-16    分類(lèi): 網(wǎng)站建設(shè)

網(wǎng)站導(dǎo)航

網(wǎng)站開(kāi)發(fā)中經(jīng)常會(huì)遇到整站搜索功能,而搜索之后會(huì)出現(xiàn)大量的數(shù)據(jù),而通常都是使用分頁(yè)的形式去展示這些數(shù)據(jù),當(dāng)搜索的字段中含有中文時(shí),就可能導(dǎo)致翻頁(yè)出現(xiàn)亂碼,導(dǎo)致翻頁(yè)失效。
搜索使用form表單提交的方式,前端代碼:







頁(yè)面URL地址
程序代碼
下面是頁(yè)碼出現(xiàn)亂碼的地址,點(diǎn)擊后無(wú)法跳轉(zhuǎn)到第二頁(yè)的內(nèi)容:
PHP代碼
查看了ThinkPHP\Library\Think\Page.class文件后發(fā)現(xiàn)代碼是這樣的
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);

得到的正常的地址應(yīng)該是這樣的:

在后續(xù)的使用過(guò)程中又發(fā)現(xiàn),URL在Apache上是/不會(huì)有問(wèn)題,但是在IIS上用/會(huì)亂碼,必須用?=這種格式才行或者到需要通過(guò)url?=傳遞參數(shù)時(shí)。
$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;

得到的地址是這樣的:

網(wǎng)站標(biāo)題:thinkphp網(wǎng)站開(kāi)發(fā)之分頁(yè)參數(shù)亂碼解決
本文路徑:http://bm7419.com/news/237462.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站內(nèi)鏈、網(wǎng)頁(yè)設(shè)計(jì)公司、微信公眾號(hào)網(wǎng)站收錄、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化