urlencode:編碼 URL 字符串
手冊上是這樣解釋的:
返回字符串,此字符串中除了 -_. 之外的所有非字母數字字符都將被替換成百分號(%)后跟兩位十六進制數,空格則編碼為加號(+)。此編碼與 WWW 表單 POST 數據的編碼方式是一樣的,同時與 application/x-www-form-urlencoded 的媒體類型編碼方式一樣。由於歷史原因,此編碼在將空格編碼為加號(+)方面與 RFC1738 編碼(參見 rawurlencode())不同。
rawurlencode:根據 » RFC 3986 編碼指定的字符。
倆個對應的解碼是:urldecode,rawurldecode;
來個例子比較好對比:
1 <?php 2 header("Content-type:text/html;charset=utf-8"); 3 $str = "http://www.baidu.com?name=多多喜 "; 4 echo rawurlencode($str); 5 echo "<br>"; 6 echo rawurldecode($str); 7 echo "<br>"; 8 $str1 = "http://www.baidu.com?name=多多喜 "; 9 echo urlencode($str1); 10 echo "<br>"; 11 echo urldecode($str1);
結果:
http%3A%2F%2Fwww.baidu.com%3Fname%3D%E5%A4%9A%E5%A4%9A%E5%96%9C%20 http://www.baidu.com?name=多多喜
http%3A%2F%2Fwww.baidu.com%3Fname%3D%E5%A4%9A%E5%A4%9A%E5%96%9C+ http://www.baidu.com?name=多多喜
可以看出,就空格的差異。。urlencode 轉化成 %20;rawurlencode 轉換成+
