首頁  >  文章  >  後端開發  >  PHP函數詳解:urlencode()

PHP函數詳解:urlencode()

WBOY
WBOY原創
2016-07-25 08:46:411323瀏覽
urlencode函數將傳入的字串參數進行URL編碼。其傳回的字串中除了「ˉ—.」之外,所有非字母數字字元都被替換成百分號(%)後跟兩位十六進制數,空格則編碼為加號( )。此函數便於將字串編碼並將其用於URL的請求部分,同時也便於將變數傳遞給下一頁。
URLEncode:是指針對網頁url中的中文字元的一種編碼轉換方式,最常見的就是Baidu、Google等搜尋引擎中輸入中文查詢時候,產生經過Encode過的網頁URL。 URLEncode的方式一般有兩種一種是傳統的基於GB2312的Encode(Baidu、Yisou等使用),一種是 基於UTF-8的Encode(Google,Yahoo等使用)。本工具分別實現兩種方式的Encode與Decode。
  • 中文 -> GB2312的Encode -> ����
  • 中文 -> UTF-8的Encode -> 中文
Html中的URLEncode
編碼為GB2312的html檔案中,http://www.nowamagic.net/中文.rar -> 瀏覽器自動轉換為-> http://www.nowamagic.net/����.rar
注意:Firefox對GB2312的Encode的中文URL支援不好,因為它預設是UTF-8編碼發送URL的,但是ftp://協定可以。
編碼為UTF-8的html檔案中,http://www.nowamagic.net/中文.rar -> 瀏覽器自動轉換為-> http://www.nowamagic.net/中文.rar
PHP中的URLEnncode:
<ol><li> <br><code><br><li> <br><code><br><li> <br><code><li> <br><?php   <li> </li> //GB2312的Encode  
echo urlencode("中文-_. ")."n"; //����-__ .   echo urldecode("����-_. ")."n"; //中文-_.  
echo rawurlencode("中文-_. ")."n "; //����-_.   echo rawurldecode("����-_. ")."n"; //中文-_.  ?>  
複製程式碼
  • 除了 -_. 之外的所有非字母數字字元都將被替換成百分號(%)後面跟著兩位十六進位數。

urlencode和rawurlencode的差別:
  • urlencodecode 將空格編碼為加號( )
  • urlencode 🎜>rawurlencode 將空格則編碼為加號( )
    如果要使用UTF-8的Encode,有兩種方法:


  1. 將檔案儲存為UTF-8文件,直接使用urlencode、rawurlencode即可。
    使用mb_convert_encoding函數。


$url = 'http://www.nowamagic.net/中文.rar';  
echo🎜>echo urlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."n";  
echo rawurlencode(mb_convert_encoding($url, 'utf-8', 'gb2312')). n";  //http://www.nowamagic.net/中文.rar  ?>  
複製代碼 實例:
  1. function parseurl($url="")  
  2. {  
  3.         $a = array(":", "/", "@");  
  4.   arra ":", "/", "@");  
  5.         $url = str_replace($a, $b, $url);  

    $url="ftp://ud03:password@www.nowamagic.net/中文/中文.rar";  

  6. echo parseurl($url);  

  7. echo parseurl($url);  

  8. //ftp://ud03:password@www.nowamagic.net/����/����.rar  
  9. ?>  
複製程式碼

JavaScript中的URLEncode: 中文-_. 中文-_. ,encodeURI 不會對下列字元進行編碼:「:」、「/」、「;」、「?」、「@」等特殊字元。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn