PHP 中單引號與雙引號都能定義字串,但解析機制、效能、適用場景截然不同。本文深度解析兩者差異、轉義字符表、HTML 輸出最佳實踐,助你寫出更高效、可維護的代碼。
<?php
$name = "string";
echo "字串" . '$name'; // 輸出:字串$name
echo "字串" . "$name"; // 輸出:字串string
?>
\' 和 \\| 轉義序列 | 含義 | 單引號 | 雙引號 |
|---|---|---|---|
| \n | 換行 (LF) | 否 | 是 |
| \r | 回車 (CR) | 否 | 是 |
| \t | 水平製表符 | 否 | 是 |
| \\ | 反斜線 | 是 | 是 |
| \$ | 美元符號 | 否 | 是 |
| \' | 單引號 | 是 | 是 |
| \" | 雙引號 | 否 | 是 |
| \[0-7]{1,3} | 八進位字符 | 否 | 是 |
| \x[0-9A-Fa-f]{1,2} | 十六進位字符 | 否 | 是 |
echo 無返回值,print 返回 1echo 可接多參數 echo 'a', 'b';,print 單參數echo 'She said,"Hi"'; / echo "It's OK";echo "She said,\"Hi\""; / echo 'It\'s OK';<<<EOT
這裡可以隨意使用 ' 和 "
變數 $name 會解析 (Heredoc)
EOT;
<<<'EOT'
Nowdoc 視同單引號,不解析變數
EOT;HTML 屬性大量使用雙引號,PHP 用單引號包裹最省事:
// 推薦:單引號包裹 HTML
echo '<table width="200" border="1" cellspacing="5" cellpadding="2" align="center">';
// 不推薦:雙引號需大量轉義
echo "<table width=\"200\" border=\"1\" cellspacing=\"5\" cellpadding=\"2\" align=\"center\">";
搞懂引號細節,是寫出優雅 PHP 代碼的基礎功夫。