新聞中心
這篇文章主要介紹PHP中如何實(shí)現(xiàn)接收多個(gè)name相同但Value不相同表單數(shù)據(jù),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
在一個(gè)詢盤留言管理系統(tǒng)時(shí)候一個(gè)問(wèn)題,留言的前臺(tái)的表單當(dāng)中出現(xiàn)很多name值相同的input框,這些框是由用戶填寫的各不相同的值,現(xiàn)在要遷移到php平臺(tái)上,而且要求不能改變前臺(tái)的任何表單(因?yàn)橛玫竭@個(gè)表單的網(wǎng)站實(shí)在是太多了,所以必須要考慮轉(zhuǎn)移的兼容性,就連form的提交地址也不能變,必須是提交到某個(gè)asp頁(yè)面上)。form提交地址問(wèn)題,可以用偽靜態(tài)或其它方法直接解決。由于以前的系統(tǒng)是由asp做的,asp在處理相同name值的表單的時(shí)候,是直接用逗號(hào)把前臺(tái)提交的值連起來(lái),而php卻不一樣,它接收相同的name的input的時(shí)候,是最后一個(gè)把前面的值給覆蓋掉了。那么,怎么樣在不改寫前臺(tái)的基礎(chǔ)上,做到能接受到所有name相同的input的值呢?當(dāng)時(shí)腦子里浮現(xiàn)兩個(gè)想法,第一個(gè)是讓這個(gè)input的name以數(shù)組的方式傳到后臺(tái),然后作出處理,但是很快被否定掉了,因?yàn)檫@樣也必須要改動(dòng)前臺(tái)的代碼,讓
改成。第二個(gè)想法是php配置當(dāng)中,有沒(méi)有類似的設(shè)置可以讓php像asp這樣處理相同name值的表單,查了半天資料,也沒(méi)有找到。
最后發(fā)現(xiàn),只能退而求其次,稍微改動(dòng)一下前臺(tái),把name換成數(shù)組,幸好這樣去用的網(wǎng)站并不多。那么接下來(lái)就是后臺(tái)處理數(shù)據(jù)的問(wèn)題了,前臺(tái)的name有一部分改了,這時(shí)候就會(huì)出現(xiàn)一種情況,php不知道由form提交過(guò)來(lái)的是字符串還是數(shù)組,那么怎么樣去做呢,我的辦法是寫一個(gè)函數(shù):
function input_treat($input){ if(gettype($input)=="string"){ return htmlentities(trim($input),ENT_QUOTES); }else if(gettype($input)=="array"){ $nd=""; foreach($input as $v){ $nd .=htmlentities(trim($v),ENT_QUOTES)." "; } return $nd; }else{ return false; } }
用input_treat()函數(shù)去處理GET或者POST過(guò)來(lái)的值,如果是字符串,那么把字符串處理一下返回,如果是數(shù)組,那么遍歷這個(gè)輸入,用空格把數(shù)組的每個(gè)元素連起來(lái),然后返回整個(gè)連起來(lái)的字符串。
這樣,整個(gè)需求就實(shí)現(xiàn)了,缺點(diǎn)是對(duì)一部分使用相同name表單的網(wǎng)站必須要更改一下數(shù)據(jù)
以上是“PHP中如何實(shí)現(xiàn)接收多個(gè)name相同但Value不相同表單數(shù)據(jù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
新聞標(biāo)題:PHP中如何實(shí)現(xiàn)接收多個(gè)name相同但Value不相同表單數(shù)據(jù)-創(chuàng)新互聯(lián)
文章分享:http://www.dlmjj.cn/article/decchs.html