PHP strip_tag 和 htmlspecialchars 不适用于多输入

PHP strip_tag and htmlspecialchars not working for multiple input

我正在尝试从多个用户输入中删除 html 标签。 我单独尝试过它有效,但是当我把它变成一个函数时,它 不是 删除 html 标签...

$test = array('name' => '<script>alert("HELLO..");</script>',
                'phone' => '23497999000000'
                );

    (clean($test));
function clean($field)
    {
        foreach ($field as $key => $value) {
            $value = htmlspecialchars(strip_tags($value));
        }
        return $field;
    }


您设置了 $value 的值,但当它超出范围时丢失了它。 我认为它会是正确的:

function clean($field)
    {
        foreach ($field as $key => $value) {
            $field[$key] = htmlspecialchars(strip_tags($value));
        }
        return $field;
    }

您没有将值分配给任何东西,因此值在您的内部循环中丢失了。

function clean($field)
{
    foreach ($field as $key => $value) {
        $field[$key] = htmlspecialchars(strip_tags($value));
    }

    return $field;
}

您还想在返回时保留清理后的版本:

$test = clean($test);

通过选项 $value 参考:

function clean($field)
{
    foreach ($field as &$value) {
        $value = htmlspecialchars(strip_tags($value));
    }
    return $field;
}