我不太确定我哪里出错:(
if(isset($_POST['finish'])){
$objectives=addslashes(strip_tags($_POST['item']));
foreach ($objectives AS $objective) {
echo "$objective <br />";
}
}
它没有显示任何东西......我错过了什么?我正试图从多个输入条目中获取数据..
<input class="item" id="objectives" name="item[]" />
有什么想法吗?
答案 0 :(得分:5)
如果您有多个<input class="item" id="objectives" name="item[]" />
,那么$_POST['item']
将是一个数组,而不是一个字符串。因此,您必须迭代它或应用array_map函数。
$items = array_map('strip_tags',$items);
$items = array_map('addslashes',$items);
您的代码将是
if(isset($_POST['finish'])){
$_POST['item'] = array_map('strip_tags',$_POST['item']);
$_POST['item'] = array_map('addslashes',$_POST['item']);
foreach ($_POST['item'] AS $objective) {
echo "$objective <br />";
}
}
答案 1 :(得分:0)
直接的答案是任何带括号([])的标签都作为数组放入超全局数组中。您将需要循环使用此数组或使用array_map在此数组上执行函数。
我的扩展答案是,如果您使用的是PHP 5.2或更高版本,则可以使用filter_var_array执行此操作,而无需在php中迭代您的数组。以及进行类型检查。 filter_var和filter_var_array有很多过滤选项供我使用。请参阅文档http://php.net/manual/en/function.filter-var-array.php
if(isset($_POST['finish'])) {
$objectives = filter_var_array($_POST['item'], FILTER_SANITIZE_STRING);
foreach ($objectives AS $objective) {
echo "$objective <br />";
}
}