国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php中urlencode與rawurlencode的區別

2024-09-04 11:48:29
字體:
來源:轉載
供稿:網友

urlencode與rawurlencode函數是對url進行一些處理,但在處理時它們是有區別的,特別是對于些特殊字符時它們表現出來的是完全不一樣的,下面我就來詳細舉例子來說明一下這兩個url處理函數吧.

前段時間說自己遇到了個《URL加號引發錯誤》的BUG,引起這個bug的原因就是自己在URL中使用了 urlencode 函數,該函數會把空格轉換成加號,這樣就導致URL解析出錯,而空格只有轉換成 %20 才可以可以正常解析,這時我們就需要使用 rawurlencode 函數。下面就介紹一下 urlencode 函數與 rawurlencode 函數的區別.

urlencode 函數:

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

rawurlencode 函數:

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

  1. <?php 
  2. $string = "hello world"
  3. echo urlencode($string) . '<br/>'//輸出:hello+world 
  4. echo rawurldecode($string) . '<br/>';//輸出:hello%20world 
  5. ?> 

具體例子比較,代碼如下:

  1. <?php 
  2. for ($i = 0x20; $i < 0x7f; $i++) {  
  3. $str .= dechex($i);  
  4. $asscii = pack("H*",$str);  
  5. echo "所有的可打印的asscii字符:(從空格到~)n"$asscii."/n";  
  6. echo "urlencode 的結果:/n".urlencode($asscii);  
  7. echo "/n";  
  8. echo "urlencode 不做編碼的字符:/n".preg_replace("/%.{2}/","",urlencode($asscii));  
  9. echo "/n";  
  10. echo "rawurlencode 的結果:/n".rawurlencode($asscii);  
  11. echo "/n";  
  12. echo "rawurlencode 不做編碼的字符:/n".preg_replace("/%.{2}/","",rawurlencode($asscii));  
  13. echo  "/n"
  14. exit
  15. ?> 
  16. /*輸出結果: 
  17. 所有的可打印的asscii字符:(從空格到~) 
  18. !"#$%&’()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[/]^_abcdefghijklmnopqrstuvwxyz{|}~ 
  19. urlencode 的結果: 
  20. +%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D%7E 
  21. urlencode 不做編碼的字符: 
  22. +-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz 
  23. rawurlencode 的結果: 
  24. %20%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D%7E 
  25. rawurlencode 不做編碼的字符: 
  26. -.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz 
  27. */ 

比較二者的結果:

1.數字、大小寫字母都不編碼

2.減號、點號、下劃線  三個不編碼

3.rawurlencode比urlencode多編碼一個”加號“

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海城市| 左贡县| 周宁县| 萨迦县| 兴和县| 庄浪县| 紫阳县| 岐山县| 南昌市| 会昌县| 广安市| 丽江市| 西藏| 清水县| 芦山县| 衢州市| 房产| 咸丰县| 招远市| 河北区| 来凤县| 婺源县| 章丘市| 汉中市| 江城| 襄垣县| 石楼县| 庆元县| 建水县| 井研县| 叙永县| 玛沁县| 福泉市| 平乐县| 满洲里市| 乌审旗| 漳州市| 铜川市| 耒阳市| 耒阳市| 徐州市|