php转义特殊字符函数是什么

php转义特殊字符函数是什么
最新回答
遗留的忧伤

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实体(如&amp;、&quot;),核心用途是过滤用户输入以防御跨站脚本攻击(XSS)。转义的字符包括:&、"(未设置ENT_NOQUOTES时)、'(设置ENT_QUOTES时)、<和>。例如,用户输入的<script>会被转换为&lt;script&gt;,从而失去脚本执行能力。若需转义所有HTML字符(包括非ASCII字符),应使用htmlentities(),其配套函数htmlspecialchars_decode()用于还原转义后的实体。

总结:

  • 数据库操作:优先使用mysql_real_escape_string()(MySQL)或预处理语句,避免依赖addslashes()。
  • HTML输出:使用htmlspecialchars()过滤用户输入,防止XSS。
  • 兼容性:PHP 7+已移除mysql_*函数,推荐使用PDO或MySQLi扩展。