91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CodeIgniter中URL含有中文字符串如何解決

發布時間:2021-03-04 15:02:34 來源:億速云 閱讀:186 作者:Leah 欄目:開發技術

本篇文章給大家分享的是有關CodeIgniter中URL含有中文字符串如何解決,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

codeIgniter默認的配置下是不允許URL中包含非ASCII字符的,如果URL中含非ASCII字符,那么CI會毫不客氣的拋出錯誤。本文章向碼農介紹CodeIgniter 如何解決URL含有中文字符串。

你 可能會說,那我把這個URL使用函數urlencode一下呢?不行。因為Web Server會在接收到一個被urlencode的URL后自動將其decode,然后在PHP里得到的這些字符串轉換成他原來所代表的含義,并使用 Web Server自己的URL編碼字符集(IIS6 中文版是GBK,Apache 2.2是UTF-8)傳送給應用程序,這就使得CI得到的URL已經是一個解碼過的,無論你有沒有對URL進行urlencode,瀏覽器在發出請求時會 自動檢測,若沒有,則會自動進行編碼。所以,手動的進行urlencode并不能解決問題。那么我們應該怎么做來解決這個問題呢?

對于CI這種框架,用到現在,我的觀點是盡量不要去修改它,而是去擴展他,CI提供了很好的擴展機制,我們只需要在application/core/下(2.0版本以前的為application/libraries/)增加一個文件MY_URI.php,其內容為:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 
 
class MY_URI extends CI_URI { 
 
 /** 
  * 自定義的url過濾函數 
  * 
  * @access private 
  * @param string 
  * @return string 
  */ 
 function _filter_uri($str) 
 { 
  if ($str != '' AND $this->config->item('permitted_uri_chars') != '') 
  { 
   $str = urlencode($str); 
   if ( ! preg_match("|^[".preg_quote($this->config->item('permitted_uri_chars'))."]+$|i", $str)) 
   { 
    exit('The URI you submitted has disallowed characters.'); 
   } 
   $str = urldecode($str); 
  } 
  return $str; 
 }  
}

我覆蓋了原來CI_URI中的_filter_uri方法,這樣就可以使得中文的URL通過檢測。但是,如果URL里有空格, 也不行了,怎么辦呢?原來,urlencode會將空格轉換成+,而CI的默認配置中是不允許+出現在URL里的,OK,把

$config ['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';

改成

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\+\-';

就可以了。

或者

第一步把config.php 中的

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';

替換成

$config['permitted_uri_chars'] ='a-z 0-9~%.:_-u4e00-u9fa5';

面所有的操作我們都做完了,但是接下來你可能又遇到了新的問題,那就是url中得到的中文信息是亂碼,不知道在你的服務器上會不會遇到該問題,但是我遇到了(IIS)。但是在本地是正常的,本地用的是apache。

好,我在程序中,把$_SERVER['REQUEST_URI']打印出來,發現它就是亂碼的,苦思冥想,這是怎么回事?這就說明在我得到uri中的參數之前,就已經被編碼了,好,我們使用iconv解碼:

iconv("gb2312","UTF-8",$uri);

以上就是CodeIgniter中URL含有中文字符串如何解決,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

景德镇市| 昌吉市| 防城港市| 桦甸市| 莱州市| 哈密市| 花莲县| 琼海市| 上虞市| 隆尧县| 洛扎县| 武宣县| 清苑县| 凤翔县| 常熟市| 习水县| 富锦市| 宾川县| 乌审旗| 泽库县| 崇明县| 浦北县| 闻喜县| 常山县| 淅川县| 巫山县| 甘谷县| 石河子市| 兴城市| 乌兰察布市| 中牟县| 东安县| 德庆县| 闽清县| 鄂州市| 广丰县| 衡水市| 甘泉县| 方城县| 依安县| 合江县|