PHP字符串支持单引号、双引号、Heredoc和Nowdoc四种语法:单引号不解析变量和转义(仅'、\),双引号支持变量插值与完整转义,Heredoc以<<<IDENTIFIER开始、顶格IDENTIFIER结束,类似双引号可解析变量。

PHP字符串可以直接用单引号、双引号创建,也支持更灵活的 Heredoc 和 Nowdoc 语法——它们适合写多行文本,且在处理大段 HTML、SQL 或配置内容时特别实用。
单引号与双引号:最基础的两种方式
单引号字符串不解析变量和大多数转义字符(仅支持 ' 和 \);双引号则支持变量插值和完整转义序列(如 、 、$ 等)。
示例:
$name = 'Alice'; echo 'Hello $name'; // 输出:Hello $name echo "Hello $name"; // 输出:Hello Alice echo 'Path: C:\xampp'; // 输出:Path: C: mpp echo "Line break: OK"; // 输出:Line break:(换行)OK
Heredoc:带变量解析的多行字符串
Heredoc 以 <<<IDENTIFIER 开始,以单独一行的 IDENTIFIER 结束(前后不能有空格或字符)。它表现类似双引号字符串,支持变量替换和转义。
立即学习“PHP免费学习笔记(深入)”;
注意点:
- 结束标识符必须顶格书写,前后无空格、无缩进
- 标识符建议全大写且有意义(如 HTML、SQL)
- 支持花括号包裹变量,提高解析准确性:{$user['id']}
实测可用示例:
$title = 'Dashboard';
$content = <<<HTML
<div class="page">
<h1>$title</h1>
<p>Welcome, {$user['name']}!</p>
</div>
HTML;
echo $content;
Nowdoc:原样输出的多行字符串(PHP 5.3+)
Nowdoc 写法与 Heredoc 几乎一样,区别在于开始标识符用单引号包裹:<<<'IDENTIFIER'。它完全禁用变量解析和转义,所有内容按字面量输出,就像加强版单引号字符串。
适用场景:
- 写正则表达式(避免反斜杠被误解析)
- 嵌入 Shell 脚本或 JSON 模板
- 需要保留原始缩进和换行的文档注释
实测可用示例:
$regex = <<<'REGEX'
/^[w-.]+@[w-.]+.[a-zA-Z]{2,}$/
REGEX;
echo $regex; // 原样输出,反斜杠不会被转义
小技巧与避坑提醒
Heredoc/Nowdoc 在 PHP 7.3+ 支持“宽松结束标识符”:允许结束标识符后跟分号或逗号(如 HTML;),但兼容性起见仍推荐传统写法。
常见错误:
- 结束标识符前有空格或 Tab → 致命错误:Unterminated heredoc
- 混淆大小写(HTML 开始,却用 html 结束)→ 不报错但无法终止,后续代码全被当字符串
- 在 Nowdoc 中写 $name 期待替换 → 实际原样输出,不会变化
只要缩进对齐、标识符一致、引号匹配,Heredoc 和 Nowdoc 在真实项目中稳定可用,Laravel、Symfony 等主流框架源码里也常用来组织长文本。



















