当前位置:  开发笔记 > 编程语言 > 正文

PHP中的递归stripslashes方法疑难解答

如何解决《PHP中的递归stripslashes方法疑难解答》经验,为你挑选了1个好方法。

我试图在PHP文档中使用stripslashes_deep函数作为方法,但是当我将它传递给数组时,它不起作用.但是,它确实可以使用字符串.任何人都可以指出为什么它可能无法正常工作?魔术引号是因为我正在测试这种可能性,但就像我说的那样,它适用于字符串而且我也没有测试$ _POST或$ _GET数据.这是代码:

protected function stripslashes_deep($input){
    return is_array($input) ? array_map($this->stripslashes_deep, $input) : stripslashes($input);
}

字符串'O \'Reilly'被转换为'O'Reilly',但下面的数组保持不变:

数组([0] =>数组([userId] => 23 [0] => 23 [用户名] => O \'Reilly [1] => O \'Reilly [userFirstName] => Bill [2] => Bill [userLastName] => O \'Reilly [3] => O \'Reilly))

任何帮助将不胜感激.

编辑:

该数组来自数据库并具有斜杠,因为它是由PDO对象插入的绑定参数.我扩展了PDO,我试图在获取数组时自动去除斜杠,所以我不必每次输出数据时调用stripslashes.如果有人知道更好的方法,我肯定会接受建议.我没有看到任何类型的PDO的非引用方法.



1> troelskn..:
array_map($this->stripslashes_deep, $input) : stripslashes($input);

应该:

array_map(array($this, 'stripslashes_deep'), $input) : stripslashes($input);

如果你打算撤消魔术引号,你不应该以递归的方式实现它,因为它有一些性能和安全问题.见:http://talks.php.net/show/php-best-practices/26

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有