在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:死板,写啥出啥(类似 '')。
网友回复
有没有不依赖embedding向量的RAG技术?
有没有支持实时打断语音通话并后台帮你执行任何的ai模型?
开源ai大模型文件格式GGUF、MLX、Safetensors、 ONNX 有什么区别?
出海挣钱支付收款PayPal、Wise 、PingPong、Stripe如何选择?
如何实现类似google的图片隐形水印添加和识别技术?
linux上如何运行任意windows程序?
ai能写出比黑客还厉害的零日漏洞等攻击工具攻击任意软件系统工程?
js如何获取浏览器的音频上下文指纹、Canvas指纹、WebGL渲染特征?
为啥ai开始抛弃markdown文本,重新偏好html文本了?
网站有没有办法鉴别访问请求是由ai操控chrome-devtools-mcp发出的?


