2026-03-15 00:29:30
PHP中用于转义特殊字符的函数主要有以下三个,其功能和应用场景如下:
1. addslashes()
该函数通过在字符串中的特殊字符前添加反斜线()实现转义,主要针对以下字符:单引号(')、双引号(")、反斜线()和空字符(NUL)。其核心用途是为SQL语句中的字符串提供基础转义,尤其在数据库管理系统(DBMS)未提供专用转义函数时使用。例如,在早期PHP版本中,若未关闭magic_quotes_gpc(PHP 5.3前默认开启),系统会自动对$_GET、$_POST、$_COOKIE中的数据调用addslashes(),此时重复调用会导致双重转义(需注意PHP 5.4后该功能已被移除)。配套函数stripslashes()用于移除转义后的反斜线。
2. mysql_real_escape_string()
此函数专为MySQL数据库设计,转义SQL语句中的特殊字符以防止注入攻击。受影响的字符包括:空字符(x00)、换行符( )、回车符(r)、单引号(')、双引号(")和控制字符(x1a)。其转义规则更严格且与MySQL版本兼容,例如在写入数据库时,反斜线仅在SQL执行阶段存在,数据实际存储时会去除转义符,因此读取数据时无需调用stripslashes()。注意:该函数需先建立数据库连接才能使用,且仅适用于MySQL,其他数据库需使用对应函数(如PDO的预处理语句)。
3. htmlspecialchars()
该函数将HTML中的特殊字符转换为HTML实体(如&、"),核心用途是过滤用户输入以防御跨站脚本攻击(XSS)。转义的字符包括:&、"(未设置ENT_NOQUOTES时)、'(设置ENT_QUOTES时)、<和>。例如,用户输入的<script>会被转换为<script>,从而失去脚本执行能力。若需转义所有HTML字符(包括非ASCII字符),应使用htmlentities(),其配套函数htmlspecialchars_decode()用于还原转义后的实体。
总结: