0

我不太确定我要去哪里错了:(

if(isset($_POST['finish'])){
$objectives=addslashes(strip_tags($_POST['item']));

    foreach ($objectives AS $objective) {
        echo "$objective <br />";
    }

}

它没有显示任何内容..我错过了什么?我正在尝试从多个输入条目中获取数据..

<input class="item" id="objectives" name="item[]" />

有任何想法吗?

4

2 回答 2

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 />";
    }

}
于 2013-05-24T16:17:53.593 回答
0

直接的答案是任何带有方括号([])的标签都作为数组放入超全局数组中。您将需要遍历您的 this 或使用 array_map 在此数组上执行功能。

我的扩展答案是,如果您使用的是 php 5.2 或更高版本,您可以使用 filter_var_array 来执行此操作,而无需在 php.ini 中迭代您的数组。以及进行类型检查。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 />";
}

}

于 2014-07-20T07:25:29.810 回答