我有一个值数组,我想通过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填充。
答案 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;
}
}