我尝试使用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',但下面的数组保持不变:
阵列( =>阵列( userId => 23 => 23 username => O\'Reilly 1 => O\'Reilly userFirstName => Bill 2 => userLastName => O\'Reilly 3 => O\'Reilly ))
任何帮助都将不胜感激。
编辑:
该数组来自数据库,并且具有斜杠,因为它是由PDO对象使用绑定参数插入的。我扩展了PDO,并试图在获取数组时自动剥离斜杠,这样就不必每次输出数据时都调用stripslashes。如果有人知道更好的方法,我当然愿意接受建议。我没有看到PDO的任何类型的无引号方法。
发布于 2009-02-12 11:37:33
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
https://stackoverflow.com/questions/540874
复制相似问题