首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP Heredoc 與 Nowdoc 定界符完整指南:告別跳脫字元地獄

     編輯:PHP 綜合知識

為什麼需要定界符?

輸出大段 HTML、JavaScript、SQL 或多行字串時,傳統雙引號/單引號字串需要大量跳脫字元(\", \', \n),極難閱讀維護。PHP 的 Heredoc 與 Nowdoc 定界符讓你「所見即所得」地輸出多行內容。

Heredoc 語法

<<<標識符
內容行 1
內容行 2
...
標識符;
  • 標識符自訂(如 EOF, HTML, SQL),開頭與結尾必須完全一致。
  • 結尾標識符必須獨佔一行,行首無縮排、行尾無分號以外字元(含空白、Tab),否則會產生 Parse error: syntax error, unexpected $end。
  • 內容中的變數會被解析(如 $var, {$var}, {$obj->prop})。
  • 特殊字元無需跳脫(引號、反斜線、換行皆保留原樣)。

正確範例

<?php
$name = 'Kitty';
echo <<<EOF
<table height="20">
<tr><td>
{$name}<br/>
<script>
var p = 'hello world';
document.writeln(p);
</script>
</td></tr>
</table>
EOF;
?>

常見錯誤

  1. 結尾標識符縮排:必須頂格寫。
  2. 結尾標識符後有空白:連空格都不行。
  3. 在 Heredoc 中嵌入 PHP 標籤:<?php echo $var ?> 會導致語法錯誤,直接寫 {$var} 即可。
  4. 變數名稱邊界模糊:建議一律用 {$var} 包裹,避免 $varname 被誤判為 $var + name。

Nowdoc(PHP 5.3+)

單引號版 Heredoc:不解析變數,適合輸出包含 $ 符號的程式碼範例。

<<<'標識符'
內容不解析變數 $var
標識符;

效能與最佳實務

  • Heredoc/Nowdoc 在編譯階段即解析完成,效能與雙引號字串相近。
  • 大段靜態內容建議直接輸出 HTML 模式(?> ... <?php),可利用編輯器語法高亮。
  • 輸出使用者輸入內容時,記得配合 htmlspecialchars() 防 XSS。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved