有没有办法将参数发送到回调函数而不先创建自己的函数?

时间:2011-12-10 05:52:37

标签: php arrays htmlspecialchars array-map

我有一个值数组,我想通过htmlspecialchars运行但是带有这样的参数:

$param = htmlspecialchars($param, ENT_QUOTES);

问题是,我有一组值要运行htmlspecialchars的值:

$array = array_map('htmlspecialchars', $array);

我想知道是否有办法将ENT_QUOTES传递给array_map回调?

我总是可以使用我自己的使用htmlspecialchars的函数,但如果有办法可以做到这一点会很好。


在下面的答案之后,这是我的最终结果:

$array = array_map('htmlspecialchars', $array, array_fill(0, count($array), ENT_QUOTES));

其中只使用$ array填充的数组填充数组,并使用ENT_QUOTE填充。

2 个答案:

答案 0 :(得分:3)

如果您将第二个数组作为参数传递给array_map,这将包含与ENT_QUOTES中元素数量一样多的$array个元素,这应该有效:

$quote_style = ENT_QUOTES;
$array = array('"',"'","''''''''''''\"");
$ent_quotes_array = array($quote_style, $quote_style, $quote_style);
$array = array_map('htmlspecialchars', $array, $ent_quotes_array);
print_r($array);

或者,更优雅一点:

$array = array('"',"'","''''''''''''\"");
$ent_quotes_array = array_fill(0, sizeof($array), ENT_QUOTES);
$array = array_map('htmlspecialchars', $array, $ent_quotes_array);

答案 1 :(得分:0)

这是我的输出助手功能...

function change_values_for_encode_output(&$item, $key) {
    $item = htmlentities($item, ENT_QUOTES);
}

function encode_output_vars($vars) {
    if(is_array($vars)) {
        array_walk_recursive($vars, 'change_values_for_encode_output');
        return $vars;
    }
    else {
        $vars = htmlentities($vars, ENT_QUOTES);
                    return $vars;
    }
}