PHP Heredoc(<<<) 與 Nowdoc 語法專為大段字符串輸出設計,支援變量解析(Heredoc)與原始輸出(Nowdoc),是模板渲染、SQL 語句、多行文本的利器。
Heredoc 基礎語法
$str = <<< EOF
Here is your string
Multiple lines supported
Variable: {$var}
EOF;
- 標識符(EOF)自定義,首尾必須成對
- 結束標識必須獨佔一行,前後無空格
- 變量需用
{$var} 包裹,否則不解析
實戰範例
$a = "www.example.com";
print <<< JB51
這裡是{$a}的PHP教程
JB51;
Nowdoc:不解析變量(PHP 5.3+)
$str = <<< 'EOF'
不解析 $var
保持原樣輸出
EOF;
- 標識符用單引號包裹
'EOF'
- 行為等同於單引號字符串
- 適合輸出包含
$、{ 等特殊字符的代碼片段
核心技巧總結
| 技巧 | 說明 |
| 結束標識獨佔行 | 否則報語法錯誤 |
| 變量用 {$var} | 複雜表達式用 {$obj->prop} |
| 縮進處理 | 內容縮進會被保留,結束標識不可縮進 |
| 引號無需轉義 | 單雙引號自由嵌套 |
| 函數調用 | 需先賦值變量,再 {$var} 輸出 |
常見應用場景
- SQL 複雜查詢語句
- HTML 模板片段
- 郵件/郵件模板內容
- 配置文件生成
- 測試數據構造
對比:Heredoc vs 雙引號 vs Nowdoc
| 特性 | Heredoc | 雙引號 | Nowdoc |
| 變量解析 | ✓ | ✓ | ✗ |
| 換行支援 | ✓ | ✗(需 \n) | ✓ |
| 引號轉義 | ✗ | 需轉義 | ✗ |
| 適用場景 | 大段模板 | 簡短字符串 | 代碼片段/原始文本 |