在php中rawurlencode與rawurlencode都是對字符進行編碼的,下面我來給大家介紹urlencode和rawurlencode的區(qū)別,有需要了解的朋友可參考.
urlencode的用途就是編碼字符串,把原字符串中所有除”-_”以為的非所有字母數(shù)字字符替換成百分號(%)后跟兩位十六進制數(shù),但是需要注意:由于歷史原因會把空格替換+號.rawurlencode其實和urlencode一樣,也是用來編碼字符串的,唯一的不同是它是使用RFC1738 編碼,也就是會把空格替換成%20.
它們對應的解碼函數(shù)是urldecode和rawurldecode.參考官方網(wǎng)站的說明,urldecode解碼給出的已編碼字符串中的任何%##,加號(’+')被解碼成一個空格字符;rawurldecode解碼字符字符串中百分號(%)后跟兩位十六進制.有兩點區(qū)別,一是urldecode解碼是對百分號(%)后任意兩位字符都去會進行解碼,例如%MN也會解碼,但是會失敗;rawurldecode則只會對百分號(%)后兩位是十六進制(0-9A-F)的字符才會解碼,二是urldecode會把+號解碼為空格.
我們再看來兩個函數(shù)在php官方的介紹吧.
urlencode — 編碼 URL 字符串Report a bug 說明
string urlencode ( string $str )
此函數(shù)便于將字符串編碼并將其用于 URL 的請求部分,同時它還便于將變量傳遞給下一頁.Report a bug 參數(shù)str 要編碼的字符串.
Report a bug 返回值
返回字符串,此字符串中除了 -_. 之外的所有非字母數(shù)字字符都將被替換成百分號(%)后跟兩位十六進制數(shù),空格則編碼為加號(+).此編碼與 WWW 表單 POST 數(shù)據(jù)的編碼方式是一樣的,同時與 application/x-www-form-urlencoded 的媒體類型編碼方式一樣.由于歷史原因,此編碼在將空格編碼為加號(+)方面與 RFC1738 編碼(參見 rawurlencode())不同.
實例代碼如下:
rawurlencode — 按照 RFC 1738 對 URL 進行編碼Report a bug 說明
string rawurlencode ( string $str )
根據(jù) » RFC 3986 編碼指定的字符.Report a bug 參數(shù)str 要編碼的 URL.
Report a bug 返回值
返回字符串,此字符串中除了 -_. 之外的所有非字母數(shù)字字符都將被替換成百分號(%)后跟兩位十六進制數(shù).這是在 » RFC 3986 中描述的編碼,是為了保護原義字符以免其被解釋為特殊的 URL 定界符,同時保護 URL 格式以免其被傳輸媒體(像一些郵件系統(tǒng))使用字符轉換時弄亂.
實例代碼如下:
以上例程會輸出: