本文章來給大家介紹關於rawurlencode()和urlencode()函數區別用法介紹,各位朋友可參考。
今天在閱讀開源代碼時發現了一個URL的編碼函數:rawurlencode(),以前一直沒有注意過,因為在平時的開發上主要使用的是 urlencode(),故專門研究了一番。
其實這兩個函數的區別很簡單,它們兩個都會把URL中的非英文字符進行轉義,替換成"%"後跟兩位十六進制數,不同的是:rawurlencode 遵守是94年國際標准備忘錄RFC 1738,對空格的轉義是'%20′;而urlencode的編碼實現的是傳統做法,和POST表單數據一樣會把空格轉義成"+"號。
舉個例子:
如果URL地址源的形式是:http://www.bKjia.c0m 編碼區別
rawurlencode($url):
http%3A%2F%2Fityizhan.com%2FPHP%20%E7%BC%96%E7%A0%81%E5%8C%BA%E5%88%AB%2B
urlencode($url):
http%3A%2F%2Fityizhan.com%2FPHP+%E7%BC%96%E7%A0%81%E5%8C%BA%E5%88%AB%2B
從這個例子中可以很明顯的看出二者的區別,如果我們想給編碼的URL解碼的話,可以使用這兩個函 數:rawurldecode(),urldecode() 。在實際的開發中為了避免URL格式不統一,還是推薦大家使用rawurlencode()來進行URL的編碼。
同樣的操作在Javascript也有一些區別,大家可以參考:javascript的URL編碼與反編碼, 裡面講述了Javascript中escape(), encodeURI() ,encodeURIComponent()的編碼使用