php使用parse_str實現(xiàn)查詢字符串解析到變量中的方法
本文實例講述了php使用parse_str實現(xiàn)查詢字符串解析到變量中的方法。分享給大家供大家參考,具體如下:
parse_str()函數(shù)可實現(xiàn)把字符串解析到變量中,這意味著實現(xiàn)了字符串與變量之間的一種轉(zhuǎn)換機(jī)制,在與客戶端數(shù)據(jù)傳遞的過程中,數(shù)據(jù)是通過字符串的形式傳遞,如GET請求,然后在服務(wù)器端通過$_GET/$_POST等全局變量實現(xiàn)字符串與變量的轉(zhuǎn)換,如:http://www.dbjr.com.cn/?index.php?var1=1&var2=2,請求后服務(wù)端可使用$_GET['var1']的方式獲取var1=1&var2=2這一段字符串轉(zhuǎn)換成變量。parse_str()函數(shù)可實現(xiàn)用樣的功能,使用parse_str()函數(shù)解析$_SERVER['QUERY_STRING']的值,就可以直接實現(xiàn)字符串與變量的轉(zhuǎn)換,如$var1。
一、函數(shù)原型
void parse_str ( string str [, array &arr] )
二、版本兼容
PHP 3, PHP 4, PHP 5
三、函數(shù)基礎(chǔ)用法與實例
1. 解析字符串為變量
<?php parse_str("var1=jb51&var2=parse_str"); echo $var1.$var2; ?>
2. 解析字符串并將變量存儲到數(shù)組中
<?php parse_str("var1=jb51&var2=parse_str",$array); print_r($array); ?>
輸出:
Array ( [var1] => jb51 [var2] => parse_str )
說明:這種將變量存儲到數(shù)組中在PHP 4.0.3 才增加
3. 解析的字符串有空格
<?php parse_str("v ar1=jb51&var 2=parse_str",$array); print_r($array); ?>
輸出:
Array ( [v_ar1] => jb51 [var_2] => parse_str )
說明:直接將空格轉(zhuǎn)換為下劃線_
四、注意事項
1. 如果未設(shè)置 array 參數(shù),由該函數(shù)設(shè)置的變量將覆蓋已由同名變量。
2. php.ini 中的 magic_quotes_gpc 設(shè)置影響該函數(shù)的輸出。如果已啟用,那么在 parse_str() 解析之前,變量會被 addslashes() 轉(zhuǎn)換。
3. parse_str() 函數(shù)在處理參數(shù)時存在漏洞,攻擊者可以利用這個漏洞啟用register_globals,從而進(jìn)一步利用其他PHP腳本中的漏洞。如果僅以一個參數(shù)調(diào)用 parse_str()的話,該函數(shù)會認(rèn)為該參數(shù)是通過URL傳送的請求字符串那樣解析所提供的字符串,但外部攻擊者可以在調(diào)用 parse_str()期間發(fā)送很多請求變量來觸發(fā)memory_limit請求終止。如果在調(diào)用parse_str()期間執(zhí)行了請求關(guān)閉的話,則在相關(guān)webserver進(jìn)程的其余生命周期期間register_globals標(biāo)簽會一直打開。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php字符串(string)用法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計算法總結(jié)》、《php排序算法總結(jié)》、《PHP常用遍歷算法與技巧總結(jié)》、《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計有所幫助。
相關(guān)文章
PHP實現(xiàn)連接設(shè)備、通訊和發(fā)送命令的方法
這篇文章主要介紹了PHP實現(xiàn)連接設(shè)備、通訊和發(fā)送命令的方法,涉及php基于socket實現(xiàn)設(shè)備連接及數(shù)據(jù)通信的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10Zend?Framework框架等常用php框架中存在的問題
這篇文章主要介紹了Zend?Framework框架等常用php框架中存在的問題2008-01-01PHP使用preg_split()分割特殊字符(元字符等)的方法分析
這篇文章主要介紹了PHP使用preg_split()分割特殊字符(元字符等)的方法,結(jié)合具體實例形式分析了php正則分割的操作技巧與注意事項,需要的朋友可以參考下2017-02-02Linux下進(jìn)行MYSQL編程時插入中文亂碼的解決方案
Linux下進(jìn)行MYSQL編程時插入中文亂碼的解決方案...2007-03-03windows下的WAMP環(huán)境搭建圖文教程(推薦)
下面小編就為大家?guī)硪黄獁indows下的WAMP環(huán)境搭建圖文教程(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07PHP操作Postgresql封裝類與應(yīng)用完整實例
這篇文章主要介紹了PHP操作Postgresql封裝類,結(jié)合實例形式分析了php針對Postgresql數(shù)據(jù)庫常見的連接、查詢、統(tǒng)計等操作封裝技巧與使用方法,需要的朋友可以參考下2018-04-04php.ini中date.timezone設(shè)置詳解
本文給大家分享的是php.ini中date.timezone設(shè)置的方法,非常的簡單實用,有需要的小伙伴可以參考下2016-11-11