我有一个HTML表单,如下所示:
<form action="index.php" method="post">
<input type="hidden" value="Hidden Value" name="A Hidden Value" />
<select name="dropdownOption">
<option value="First Choice +200">First Choice</option>
<option value="Second Choice +300">Second Choice</option>
</select>
<p><input type="checkbox" value="Rocket +100"> Rocket</p>
</form>
我正在循环遍历此表单的值:
foreach($_POST as $key => $value) {
}
如何从foreach循环中排除隐藏的输入?
另外,所有版本的PHP都支持输入名称中的空格(例如是否有效?)在我的PHP版本中,它会自动用下划线替换空格,这很好,它是否适用于所有版本的PHP?
感谢您的帮助。
答案 0 :(得分:3)
无法区分php中不同类型的HTML输入字段。我的建议是在隐藏字段的名称中使用某种前缀或其他标识符。然后,您可以检查循环中字段名称中是否存在此前缀。你可以做到
if (strpos($key, 'hdn_') === false) // proceed
答案 1 :(得分:1)
hidden
字段,请尝试以下操作:<?php
// the not-hidden ones
$allowed_field_names = array("some_field", "another_field");
// Now, we're going to 'filter' the "hidden" fields
// The rest (the "allowed" ones are stored in $newPost
$newPost = array_intersect_key($_POST, array_flip($allowed_field_names));
foreach ($newPost as $key=>$value)
{
// Do sth
}
?>
答案 2 :(得分:0)
没有内置的方法来做你要求的事情。这就是“编程”发挥作用的地方
解决这个问题的一种方法是将你在GET中隐藏元素中放入的内容传递给它
也就是说,将其添加到表单元素的action
属性。