在我的列表中有一些输入框的名称,它遵循1 2 3 ....的顺序,
<input type= "text" name="text1">
<input type= "text" name="text2">
<input type= "text" name="text3">
这意味着帖子名称=文本1文本2文本3
但是,由于数字不固定,我实际上并没有多少文本框,我在发布表单后如何获取所有名称?
谢谢
答案 0 :(得分:5)
使用text[]
作为所有输入元素的名称,而不是text1
,text2
等。然后,您可以将值设为$_POST['text']
,这将是一个数组。此数组将包含与表单包含文本框一样多的值。
更新:如果您无法更改HTML(这很不幸),您可以通过以下方式获取已提交变量的名称:
$names = array_filter(array_keys($_POST),
function ($k) { return substr($k, 0, 4) == 'text'; });
答案 1 :(得分:2)
foreach($_POST as $name => $value) {
echo "$name = $value";
}
应该给你一个想法
或者您可以使用数组文本[]:
<input type= "text" name="text[]">
<input type= "text" name="text[]">
<input type= "text" name="text[]">
答案 2 :(得分:1)
您可以包含一个隐藏字段,其值为所有此类字段的名称。
PUT THIS IN THE HTML FORM
<input type= "text" name="text1" value="1" />
<input type= "text" name="text2" value="2" />
<input type= "text" name="text3" value="3" />
<input type="hidden" name="textContainer" value="text1,text2,text3" />
然后,您可以在PHP中获取此变量:
<?php
$textFields = trim( $_POST[ 'textContainer' ] );
$textFields = explode( ',', $textFields );
$fields = array(); // this array will contain all text fields with names text1, text2 as keys
foreach( $textFields as $key => $value ) {
$fields[ $value ] = $_POST[ $value ];
}
/* $fields is now an array like below:
Array (
'text1' => 1,
'text2' => 2,
'text3' => 3
)*/
?>
让我知道这是否有效。
答案 3 :(得分:0)
您可以遍历$_POST
数组本身
只需做一个foreach loop
但是请记住,最好知道传递的是什么值,通过执行 catch all 这样的操作,你打开自己可能的注射和攻击。