php之特殊字符转义addslashes
addslashes() 的作用就是 在字符串中自动给某些特殊字符前加上反斜杠(\)进行转义,这样它们在 SQL、PHP 字符串、或其他需要转义的场景中不会被直接当作特殊字符处理。
会转义哪些字符?
addslashes() 会在下面这些字符前加上反斜杠:
- 单引号
'→\' - 双引号
"→\" - 反斜杠
\→\\ - NUL(ASCII 0,空字符) →
\0
例子
$str = "O'Reilly";
echo addslashes($str);
输出:
O\'Reilly
在 SQL 中,如果不转义,O'Reilly 会因为 ' 号破坏语句结构:
SELECT * FROM users WHERE name = 'O'Reilly'; -- ❌ SQL 语法错误
加了 addslashes() 后:
SELECT * FROM users WHERE name = 'O\'Reilly'; -- ✅ 安全
注意
addslashes()是最基础的转义方法,并不针对某个特定数据库优化。- 在数据库场景里更推荐使用 PDO 或 Doctrine 的参数绑定(Prepared Statements),这样不需要手动转义。
- 如果必须手动转义,MySQL 其实还有更安全的
mysqli_real_escape_string()(会根据数据库连接的字符集处理转义)。
