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