php urlencode和rawurlencode的區別介紹_PHP教程

來源:互聯網
上載者:User
在php中rawurlencode與rawurlencode都是對字元進行編碼的,下面我來給大家介紹urlencode和rawurlencode的區別,有需要瞭解的朋友可參考。

urlencode的用途就是編碼字串,把原字串中所有除”-_”以為的非所有字母數字字元替換成百分比符號(%)後跟兩位十六進位數,但是需要注意:由於曆史原因會把空格替換+號。rawurlencode其實和urlencode一樣,也是用來編碼字串的,唯一的不同是它是使用RFC1738 編碼,也就是會把空格替換成%20。

它們對應的解碼函數是urldecode和rawurldecode。參考官方網站的說明,urldecode解碼給出的已編碼字串中的任何%##,加號(’+')被解碼成一個空白字元;rawurldecode解碼字元字串中百分比符號(%)後跟兩位十六進位。有兩點區別,一是urldecode解碼是對百分比符號(%)後任意兩位字元都去會進行解碼,例如%MN也會解碼,但是會失敗;rawurldecode則只會對百分比符號(%)後兩位是十六進位(0-9A-F)的字元才會解碼,二是urldecode會把+號解碼為空白格。

我們再看來兩個函數在php官方的介紹吧。

urlencode — 編碼 URL 字串

Report a bug 說明
string urlencode ( string $str )
此函數便於將字串編碼並將其用於 URL 的請求部分,同時它還便於將變數傳遞給下一頁。

Report a bug 參數

str
要編碼的字串。

Report a bug 傳回值
返回字串,此字串中除了 -_. 之外的所有非字母數字字元都將被替換成百分比符號(%)後跟兩位十六進位數,空格則編碼為加號(+)。此編碼與 WWW 表單 POST 資料的編碼方式是一樣的,同時與 application/x-www-form-urlencoded 的媒體類型編碼方式一樣。由於曆史原因,此編碼在將空格編碼為加號(+)方面與 RFC1738 編碼(參見 rawurlencode())不同。

代碼如下 複製代碼

Example #1 urlencode() 例子

echo '';
?>


Example #2 urlencode() 與 htmlentities() 例子

$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '';
?>

rawurlencode — 按照 RFC 1738 對 URL 進行編碼

Report a bug 說明
string rawurlencode ( string $str )
根據 » RFC 3986 編碼指定的字元。

Report a bug 參數

str
要編碼的 URL。


Report a bug 傳回值
返回字串,此字串中除了 -_. 之外的所有非字母數字字元都將被替換成百分比符號(%)後跟兩位十六進位數。這是在 » RFC 3986 中描述的編碼,是為了保護原義字元以免其被解釋為特殊的 URL 定界符,同時保護 URL 格式以免其被傳輸媒體(像一些郵件系統)使用字元轉換時弄亂。

代碼如下 複製代碼

Example #1 在 FTP URL 裡包含一個密碼

echo ' '@ftp.example.com/x.txt">';
?>
以上常式會輸出:

通過上面對解碼函數的描述,可以推論,使用urlencode或rawurlencode編碼的都可以使用urldecode進行解碼,但是如果原字串中含有空格,使用urlencode編碼後的字串使用rawurlencode解碼後獲得的字串會和原字串不同。

http://www.bkjia.com/PHPjc/628888.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/628888.htmlTechArticle在php中rawurlencode與rawurlencode都是對字元進行編碼的,下面我來給大家介紹urlencode和rawurlencode的區別,有需要瞭解的朋友可參考。 urlencode的用...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.