PHP自定义函数实现支持数组的addslashes转义

一只小鹿
一只小鹿
发布时间:2026-10-16| 3人浏览过
原创

本文讲解如何利用递归思想在 PHP 中封装一个能够同时处理字符串和数组的自定义 addslashes 函数,有效避免因数据类型不匹配导致的转义失败。

背景与问题

PHP 内置的 addslashes() 函数用于对单引号(')、双引号(")、反斜线(\)和 NUL 空字节进行转义,常用于防止 SQL 注入或保护输出字符。然而,该函数仅接受字符串参数。当传入的数据为数组时,直接使用会导致类型错误或非预期的行为,这在处理表单提交的多维数组数据时尤为常见。

解决方案:递归处理数组

要实现支持数组的转义功能,核心思路是利用递归遍历数组中的每个元素。如果元素是数组,则继续递归调用;如果元素是字符串,则应用 addslashes() 进行处理。

实现步骤

  1. 定义函数结构:创建名为 saddslashes 的自定义函数,接收变量 $string 作为参数。
  2. 类型判断:使用 is_array() 检测输入是否为数组。
  3. 递归处理:若为数组,通过 foreach 遍历键值对,将处理后的值重新赋值给原数组对应键。
  4. 普通转义:若非数组(即为字符串),直接调用 addslashes() 进行转义。
  5. 返回结果:返回处理完成后的数据,保持原有数据结构不变。

代码实现

//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数据处理技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。