php解析url编码,php对URL传参进行编码和解码解析
1. 對(duì)URL 傳遞的參數(shù)進(jìn)行編碼
使用URL 傳遞參數(shù)數(shù)據(jù),就是在 URL地址后面加上適當(dāng)?shù)膮?shù)。URL 實(shí)體對(duì)這些參數(shù)進(jìn)行處理。其使用的方式如下面的格式:
顯而易見,這種方法將會(huì)把參數(shù)暴露出來,安全系數(shù)較低。因此,這一章會(huì)針對(duì)該問題講述一種 URL 的編碼方式,對(duì) URL 傳遞的參數(shù)進(jìn)行編碼。
URL 編碼是一種瀏覽器用來打包表單輸入數(shù)據(jù)的格式,是對(duì)用地址欄傳遞參數(shù)進(jìn)行的一種編碼規(guī)則。如在參數(shù)中帶有空格,則用 URL 傳遞參數(shù)時(shí)就會(huì)發(fā)生錯(cuò)誤,而用 URL編碼后,空格轉(zhuǎn)換成%20.這樣錯(cuò)誤就不會(huì)發(fā)生了。 對(duì)中文進(jìn)行編碼也是童謠的情況,最主要的一點(diǎn)就是對(duì)傳遞的參數(shù)起到了隱藏的作用。
在PHP 中對(duì)查詢字符串進(jìn)行URL 編碼,可以通過 urlencode()函數(shù)實(shí)現(xiàn),該函數(shù)的語法如下:
urlencode(string)
urlencode()函數(shù)實(shí)現(xiàn)將字符串 string 進(jìn)行 URL 編碼。
在下面的實(shí)例中,應(yīng)用 urlencode()函數(shù)對(duì) URL 傳遞的參數(shù)值進(jìn)行編碼,顯示的字符串是
URL 編碼后的字符串,其實(shí)現(xiàn)的代碼如下所示:<?php
$url = urlencode('PHP中文網(wǎng)'); //把 PHP中文網(wǎng) 進(jìn)行編碼
echo "index.php?id=".$url;
?>
在瀏覽器中輸入運(yùn)行地址,按回車鍵,得到如下所示的運(yùn)行結(jié)果:
index.php?id=PHP%E4%B8%AD%E6%96%87%E7%BD%91
說明:
對(duì)于服務(wù)器而言,編碼前后的字符串并沒有什么區(qū)別,服務(wù)器能夠自動(dòng)識(shí)別。這里主要是為了講解 URL編碼的使用方法。在實(shí)際應(yīng)用中,對(duì)一些非保密性的參數(shù)不需要進(jìn)行編碼,讀者可根據(jù)實(shí)際情況有選擇的使用。
2. 對(duì)URL 傳遞的參數(shù)進(jìn)行解碼
對(duì)于 URL 傳遞的參數(shù)直接使用 $_GET[] 方法即可獲取。 而對(duì)于進(jìn)行過 URL加密的查詢字符串,則需要通過 urldecode() 函數(shù)對(duì)獲取后的字符串進(jìn)行解碼。該函數(shù)的語法如下:
urldecode(string)
urldecode() 函數(shù)可將 URL 編碼后的 string 字符串進(jìn)行編碼。
上面的例子中urlencode()函數(shù)把“PHP中文網(wǎng)” 進(jìn)行編碼,變成了“PHP%E4%B8%AD%E6%96%87%E7%BD%91”。
這里的例子應(yīng)用urlencode() 函數(shù)對(duì)獲取的編碼進(jìn)行解碼,將解碼后的結(jié)果輸出來。其實(shí)現(xiàn)的代碼如下所示:<?php
$url = urldecode("PHP%E4%B8%AD%E6%96%87%E7%BD%91"); // 把編碼還原成 PHP中文網(wǎng)
echo $url;
?>
運(yùn)行的結(jié)果如下所示:
PHP中文網(wǎng)
這里就可以清楚的看出 urldecode() 函數(shù)把 urlencode()函數(shù)編碼后的字符串進(jìn)行了還原。
總結(jié)
以上是生活随笔為你收集整理的php解析url编码,php对URL传参进行编码和解码解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php服务器队列执行,lnmp php添
- 下一篇: ubuntu 定时执行php文件,Ubu