我可以通过strip_tags()循环PHP运行$ _POST数组

时间:2016-03-20 08:05:02

标签: php arrays post

我可以通过循环运行$ _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数组中的每个字段?

4 个答案:

答案 0 :(得分:6)

是的,请使用array_map()

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

答案 1 :(得分:0)

如前所述,array_map()是您正在寻找的功能

但是,请注意,如果您的某个数组值本身就是一个数组,则strip_tags将使该值无效。密钥将保留在父数组中,但该键的值将为null。这是我用来代替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);

答案 2 :(得分:0)

无法在我的服务器上使用任何示例。你们在测试解决方案吗? 这对我有用:

// no code $allowcode=""; // put allowed code tags here foreach ($_POST as $key => $value) { $$key=strip_tags($value, $allowcode); } foreach ($_GET as $key => $value) { $$key=strip_tags($value, $allowcode); }

答案 3 :(得分:-1)

如果您不想使用任何PHP内置函数,可以执行以下操作:

    foreach($_POST AS $key=>$val)
    {
      $_POST[$key] = strip_tags($val);
    }