php中urlencode()和rawurlencode()函數(shù)的區(qū)別

2013-07-20 11:17:55來源:Linux Today作者:

今天在閱讀開源代碼時發(fā)現(xiàn)了一個URL的編碼函數(shù):rawurlencode(),以前一直沒有注意過,因為在平時的開發(fā)上主要使用的是 urlencode(),故專門研究了一番。

今天在閱讀開源代碼時發(fā)現(xiàn)了一個URL的編碼函數(shù):rawurlencode(),以前一直沒有注意過,因為在平時的開發(fā)上主要使用的是 urlencode(),故專門研究了一番。

其實這兩個函數(shù)的區(qū)別很簡單,它們兩個都會把URL中的非英文字符進行轉(zhuǎn)義,替換成”%”后跟兩位十六進制數(shù),不同的是:rawurlencode 遵守是94年國際標(biāo)準(zhǔn)備忘錄RFC 1738,對空格的轉(zhuǎn)義是’%20′;而urlencode的編碼實現(xiàn)的是傳統(tǒng)做法,和POST表單數(shù)據(jù)一樣會把空格轉(zhuǎn)義成”+”號。

舉個例子:

如果URL地址源的形式是:http://www.zzs.me/PHP 編碼區(qū)別
<?php
$url = 'http://www.zzs.me/php 編碼區(qū)別';
var_dump(urlencode($url));
echo '<br>-----------<br>';
var_dump(rawurlencode($url)) ;
?>

以上輸出的結(jié)果是:
string(66) “http%3A%2F%2Fwww.zzs.me%2Fphp+%E7%BC%96%E7%A0%81%E5%8C%BA%E5%88%AB”
———–
string(68) “http%3A%2F%2Fwww.zzs.me%2Fphp%20%E7%BC%96%E7%A0%81%E5%8C%BA%E5%88%AB”

從這個例子中可以很明顯的看出二者的區(qū)別,如果我們想給編碼的URL解碼的話,可以使用這兩個函 數(shù):rawurldecode(),urldecode() 。在實際的開發(fā)中為了避免URL格式不統(tǒng)一,還是推薦大家使用rawurlencode()來進行URL的編碼。

關(guān)鍵詞:phpurlencode

贊助商鏈接: