我能运用strip_tags()循环函数处理PHP中的$_POST数组吗?

3

我能否通过循环运行$_POST数组来获得与以下代码相同的结果?

$_POST['manufacturer'] = strip_tags($_POST['manufacturer']);<br>
$_POST['part_no']      = strip_tags($_POST['part_no']);<br>
$_POST['product_name'] = strip_tags($_POST['product_name']);<br>
$_POST['link']         = strip_tags($_POST['link']);<br>

或者有没有一种方法可以将strip_tags()应用于$_POST数组中的每个字段?

我已经做了以下更改: $form = array_map("strip_tags", $_POST); $form = array_map("trim", $form);这可能是一个新的问题,我可以使用array_map函数来移除数组中的所有空格吗?如果可以,应该如何编写代码? - undefined
可能是将函数应用于数组的简便方法的重复问题。 - undefined
4个回答

6

是的,使用 array_map()

$_POST = array_map("strip_tags", $_POST);

1
我更喜欢将其输出到一个新的变量名中。最好不要修改$_POST本身,这样可以避免后续产生任何混淆。 - undefined
这实际上是OP想要的,但是我建议将结果也放在一个新变量中。 - undefined
我已经做了这些更改 <p>$form = array_map("strip_tags", $_POST);<br>$form = array_map("trim", $form);</p><bk> 这可能是一个新的问题,我可以使用array_map来删除数组中的所有空格吗?如果可以,应该如何编写代码? - undefined
是的,你可以这样写(确保将php代码放在<?php ?>标签之间)。你还可以像这样嵌套它们:$form = array_map("trim", array_map("strip_tags", $_POST)); - undefined
请注意,如果您的数组包含一个值为数组的元素,这将保留该元素在数组中的键,但将其值设置为null。 - undefined

1
如前所述,array_map()是你要找的函数。
然而,请注意,如果你的数组值之一本身就是一个数组,strip_tags将使该值无效。键将保留在父数组中,但该键的值将为空。以下是我用来替代array_map的函数,以避免这种情况。一个可能的用途是如果你在$_POST中有html输入字段数组。例如,多个具有类似name="hello[]"的名称的输入。
function strip_tags_array($array){
    $result=array();
    if(is_array($array)){
        foreach($array as $key=>$value){
            if(is_array($value)){
                $result[$key]=strip_tags_array($value);
            }
            else if(is_string($value)){
                $result[$key]=strip_tags($value);
            }
            else{
                $result[$key]=$value;
            }
        }
    }
    return $result;
}

$_POST = strip_tags_array($_POST);

不错的开始,但是我不得不稍微修改一下,因为这样会将每个值都转换成数组,即使它是字符串,就像函数中的第一行所描述的那样。 - undefined

0

在我的服务器上无法使任何示例工作。你们是在测试解决方案吗?对我来说这个方法可行:

// 没有代码 $allowcode=""; // 在这里放置允许的代码标签 foreach ($_POST as $key => $value) { $$key=strip_tags($value, $allowcode); } foreach ($_GET as $key => $value) { $$key=strip_tags($value, $allowcode); }


-1
如果你不想使用任何PHP内置函数,你可以像下面这样做:
    foreach($_POST AS $key=>$val)
    {
      $_POST[$key] = strip_tags($val);
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接