在PHP中,当我们需要写很长的多行字符串(比如一段HTML代码或SQL语句)时,用普通的引号会很麻烦。这时就可以用到 Heredoc 和 Nowdoc。
它们最核心的区别可以用一句话概括:Heredoc 像“双引号”,Nowdoc 像“单引号”。
1. Heredoc(会“解析”变量)
写法:<<<标识符
特点:它会识别字符串里的变量,并把变量替换成具体的值。也会解析转义字符(如 \n)。
例子:
$name = "张三"; echo <<<EOT 你好,$name! EOT; // 输出:你好,张三!
适用场景:当你需要在长文本里动态插入变量时。
2. Nowdoc(完全“原样输出”)
写法:<<<'标识符' (注意:标识符被单引号包裹,这是它与Heredoc唯一的语法区别)
特点:它不会解析其中的任何变量。你写什么,它就原样输出什么。
例子:
$name = "张三"; echo <<<'EOT' 你好,$name! EOT; // 输出:你好,$name!
适用场景:当你需要输出一大段纯文本,或者是一段本身就包含大量 $ 符号的代码,且不希望PHP去乱动它时。
总结:
Heredoc:聪明,能认出变量(类似 "")。
Nowdoc:死板,写啥出啥(类似 '')。
网友回复
如何破解绕开seedance2.0真人照片生成视频 限制?
python有哪些算法可以将视频中的每个帧图片去除指定区域水印合成新的视频?
iphone的激光雷达数据能否实时传输到three三维空间中?
豆包sora等ai视频生成大模型生成的视频水印如何去除?
python如何实现在电脑上拨号打电话给手机?
具身机器人与人形机器人区别?
nodejs如何将一个完整的js代码文件切割成不同的部分混淆后动态加载进入html运行?
为啥windows.onerror捕获js错误是这样的{"message":"Script error.","source":"","lineno":0,"colno":0,"stack":null,
2026年ai将全面接管编程?
WebMCP是干啥的?


