php - 当我使用函数 htmlspecialchars 时,array_walk_recursive 无法工作?

标签 php htmlspecialchars

我使用 array_walk_recursive 将 htmlspecialchars 应用于我的数组值,但它不起作用,当我手动使用它时 htmlspecialchars 起作用; 这是我的代码:

 $new[] = "<a href='test'>Test</a><li><div>";
 var_dump(array_walk_recursive($new,'htmlspecialchars')); // true
 var_dump($new) ; // no change

最佳答案

这是因为原始数组不会被修改,除非你自己在回调函数中修改它。

你的回调函数基本上是:

function($item, $key) {
    htmlspecialchars($item);
}

因此,在调用该函数时,不会存储任何内容,并且原始数组也不会更改。

如果要修改函数中的值,可以通过引用传递:

function(&$item, $key) {
    $item = htmlspecialchars($item);
}

所以结果看起来像:

 $new[] = "<a href='test'>Test</a><li><div>";
 array_walk_recursive($new, function(&$item, $key) {
        $item =  htmlspecialchars($item);
 });
 var_dump($new) ; // change!

如果您愿意,当然可以定义一个单独的函数。

关于php - 当我使用函数 htmlspecialchars 时,array_walk_recursive 无法工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37982358/

相关文章:

php - php中的SQL强制WHERE IN查找多次相同的id

javascript - html特殊符号显示为字符

php - 使用 PHP PDO 时,我应该清理/过滤用户输入和输出吗?

php - htmlspecialchars() : Invalid multibyte sequence in argument

php - 使用 .htaccess 使所有 .html 页面作为 .php 文件运行?

php - MySQL查询结果

php - php中如何传递值

php - 如何在 CakePHP 中检索整数列的整数值?

php - 如何防止属性中的XSS

encoding - 有没有办法突出显示 Sublime Text 或任何其他文本编辑器中的所有特殊重音字符?