Php array_walk_recursive将函数应用于每个根本不工作的数组元素
我在表单页面上有以下代码:Php array_walk_recursive将函数应用于每个根本不工作的数组元素,php,Php,我在表单页面上有以下代码: array_walk_recursive($_POST, 'sanitize'); 它的使用是为了在用户提交表单后,我可以在每个表单字段内回显$\u POST变量 以下是消毒功能: function sanitize ($v) { return htmlspecialchars(trim($v), ENT_QUOTES); } function sanitize(&$item, $key) { $item = htmlspecialchar
array_walk_recursive($_POST, 'sanitize');
它的使用是为了在用户提交表单后,我可以在每个表单字段内回显$\u POST变量
以下是消毒功能:
function sanitize ($v) {
return htmlspecialchars(trim($v), ENT_QUOTES);
}
function sanitize(&$item, $key) {
$item = htmlspecialchars(trim($item), ENT_QUOTES);
}
它根本不起作用。$\u POST数组仍然包含有害的引号,当我为值输入类似“'>break”的内容时,这些引号会打断页面上的表单元素
任何帮助都将不胜感激。array\u walk\u recursive
返回一个布尔值。您的函数不应返回经过santized的输出,而应简单地操作输入。此外,您可能需要将输入声明为引用
尝试对清理功能进行以下更改:
function sanitize ($v) {
return htmlspecialchars(trim($v), ENT_QUOTES);
}
function sanitize(&$item, $key) {
$item = htmlspecialchars(trim($item), ENT_QUOTES);
}
以下是我使用的解决方案(感谢aldrin27的评论):
你可以使用参考资料
array_walk_recursive($_POST, function(&$v) {
$v = sanitize($v);
});
为什么不使用array\u map
?发布你的数组结构很好的答案,让我能够理解这个问题。我最终使用了array\u map
。它不会递归地执行。