淺談PHP 源碼二十三 :關于urlencode函數
有一段時間沒有看PHP的源碼了,最近一直在看以前買的書,有一些書已經看過一遍了,但是事隔一年又有不同的感受
urlencode函數在開發的過程中經常有遇到,它作用于字符串編碼并將其用于 URL 的請求部分
urlencode函數的作用是編碼 URL 字符串
string urlencode ( string str )
返回字符串,此字符串中除了 -_. 之外的所有非字母數字字符都將被替換成百分號(%)后跟兩位十六進制數,空格則編碼為加號(+)。此編碼與 WWW 表單 POST 數據的編碼方式是一樣的,同時與 application/x-www-form-urlencoded 的媒體類型編碼方式一樣。由于歷史原因,此編碼在將空格編碼為加號(+)方面與 RFC1738 編碼(參見 rawurlencode())不同。
在standard/url.c文件的493行,可以看到此函數的實現
out_str = php_url_encode(in_str, in_str_len, out_str_len);RETURN_STRINGL(out_str, out_str_len, 0);
在查看php_url_encode函數時,我糾結了好一段時間,因為它有一個#ifndef CHARSET_EBCDIC的編譯判斷,我一直將#ifndef看成了#ifdef,導致理解起來怪怪的
php_url_encode函數是一個遍歷整個字符串,并針對每個字符進行替換的過程,
對于除了 -_. 之外的所有非字母數字字符都將被替換成百分號(%)后跟兩位十六進制數,
此處在編譯時有針對EBCDIC編碼的處理
空格則編碼為加號(+)(
if (c == ‘ ‘) {
*to++ = ‘+’;
}
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !
相關推薦:
淺談PHP源碼二十一:關于array_slice函數
淺談PHP源碼二十二:關于array_splice函數
以上就是淺談PHP 源碼二十三 :關于urlencode函數的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答