PHP字符串转义用于正确处理特殊字符,双引号解析 "$等,单引号仅支持和';手动转义易出错,应优先使用json_encode()、htmlspecialchars()、预处理语句等安全函数。

PHP 中字符串里的转义,主要是为了让某些特殊字符(比如双引号、反斜杠、换行符等)能被正确识别或输出,而不是被当作普通文本或语法符号处理。
常见转义字符及用法
PHP 支持标准 C 风格的转义序列,主要在双引号字符串中生效(单引号里大部分不解析转义,仅支持 \ 和 '):
- :换行符(LF)
- :回车符(CR)
- :制表符(Tab)
- ":双引号(用于双引号字符串内嵌双引号)
- \:反斜杠本身
- $:美元符号(避免变量解析,如 "$name" 不会替换成变量值)
单引号 vs 双引号中的转义差异
单引号字符串几乎不解析转义(只认 \ 和 '),而双引号会解析所有上述转义序列,还会解析变量(如 $name):
"Hello World" → 输出两行<br>'Hello World' → 原样输出 字符串
需要手动转义的场景
以下情况常需主动加反斜杠:
立即学习“PHP免费学习笔记(深入)”;
- 拼接 SQL 语句时防止注入(但更推荐用预处理,而非手动转义)
- 生成 JSON 字符串时确保引号不破坏结构(json_encode() 自动处理,无需手动)
- 写正则表达式时,匹配反斜杠、点、括号等元字符(如 /\d+\.\d+/ 匹配 “123.45”)
- 路径字符串中避免 Windows 下的 、 被误解析(建议用正斜杠 / 或双反斜杠 \)
安全替代方案优先于手动转义
手动加反斜杠容易出错且不安全,实际开发中应优先使用内置函数:
- 数据库操作:用 PDO/MySQLi 的预处理语句(prepare + bindParam)
- HTML 输出:用 htmlspecialchars($str, ENT_QUOTES, 'UTF-8')
- JSON:用 json_encode($data)(自动转义并保证格式合法)
- Shell 命令:用 escapeshellarg() 或 escapeshellcmd()
基本上就这些。转义不是越多越好,关键是理解在哪种上下文里哪些字符有特殊含义,再决定是否以及如何转义。











