PHP自定义函数实现支持数组的addslashes转义
本文讲解如何利用递归思想在 PHP 中封装一个能够同时处理字符串和数组的自定义 addslashes 函数,有效避免因数据类型不匹配导致的转义失败。
背景与问题
PHP 内置的 addslashes() 函数用于对单引号(')、双引号(")、反斜线(\)和 NUL 空字节进行转义,常用于防止 SQL 注入或保护输出字符。然而,该函数仅接受字符串参数。当传入的数据为数组时,直接使用会导致类型错误或非预期的行为,这在处理表单提交的多维数组数据时尤为常见。
解决方案:递归处理数组
要实现支持数组的转义功能,核心思路是利用递归遍历数组中的每个元素。如果元素是数组,则继续递归调用;如果元素是字符串,则应用 addslashes() 进行处理。
实现步骤
- 定义函数结构:创建名为
saddslashes的自定义函数,接收变量$string作为参数。 - 类型判断:使用
is_array()检测输入是否为数组。 - 递归处理:若为数组,通过
foreach遍历键值对,将处理后的值重新赋值给原数组对应键。 - 普通转义:若非数组(即为字符串),直接调用
addslashes()进行转义。 - 返回结果:返回处理完成后的数据,保持原有数据结构不变。
代码实现
//SQL ADDSLASHES function saddslashes($string) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = saddslashes($val); } } else { $string = addslashes($string); } return $string; }
使用建议与安全提示
虽然此方法能有效兼容多维数组的转义需求,但在现代 Web 开发中,推荐使用预编译语句(Prepared Statements)如 PDO 或 MySQLi 来从根本上防范 SQL 注入,而非单纯依赖字符转义。此自定义函数可作为遗留系统维护或特定场景下的补充手段。
以上就是PHP自定义函数实现支持数组的addslashes转义的详细内容,更多关于PHP数据处理技巧的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









