| 方式 | 語法 | 變數解析 | 轉義序列 | 適用場景 |
|---|---|---|---|---|
| 單引號 | 'hello' | 否 | 僅 \'、\\ | 純靜態字串、效能最佳 |
| 雙引號 | "hello" | 是 | 完整支援 \n \r \t \$ \" \\ 等 | 需插入變數、換行 |
| Heredoc | <<<EOT ... EOT; | 是 | 同雙引號,無需轉義引號 | 大段 HTML/SQL/多行文字 |
| Nowdoc | <<<'EOT' ... EOT; | 否 | 無轉義(如單引號) | 大段靜態文字、程式碼片段 |
\n),後必須跟換行符。$name = 'Tom';
echo "Hello $name"; // Hello Tom
echo "Hello {$name}"; // 明確邊界,推薦
echo "Hello ${name}"; // 同大括號
echo "$arr[0]"; // 陣列元素
echo "{$obj->prop}"; // 物件屬性
echo "{$arr['key']}"; // 陣列鍵含特殊字元
echo "{$obj->method()}"; // 方法呼叫(PHP 5+)
echo "{${'var_' . $suffix}}"; // 變數變數
echo "{$var[0][1]}"; // 多維陣列
$str = 'Hello';
echo $str[0]; // H
$str[0] = 'h'; // hello
// 負索引:PHP 7.1+ 支援 $str[-1] 取最後一字元
// 超出範圍讀取回傳空字串,寫入擴展字串(填充空格)
| 分類 | 函數 |
|---|---|
| 長度/大小寫 | strlen(), mb_strlen(), strtolower(), mb_strtolower(), ucfirst(), ucwords() |
| 搜尋/替換 | strpos(), stripos(), strrpos(), str_replace(), str_ireplace(), substr_replace(), preg_replace() |
| 截取/分割 | substr(), mb_substr(), explode(), str_split(), parse_str() |
| 格式化 | sprintf(), printf(), vprintf(), number_format() |
| 編碼/雜湊 | urlencode(), base64_encode(), json_encode(), md5(), sha1(), hash() |
| 比較 | strcmp(), strcasecmp(), strnatcmp(), version_compare() |
| 清理 | trim(), ltrim(), rtrim(), strip_tags(), addslashes(), stripslashes() |
"123abc" → 123, "0x1A" → 0(PHP 不支援十六進位字串轉換),"1.2e3" → 1200。utf8mb4、HTML <meta charset="UTF-8">、PHP default_charset = "UTF-8"。mb_* 函數:mb_strlen(), mb_substr(), mb_strpos(), mb_strtolower(), mb_convert_encoding()。charset=utf8mb4、mysqli set_charset('utf8mb4')。htmlspecialchars($str, ENT_QUOTES, 'UTF-8')。fopen($file, 'r', false, stream_context_create(['encoding'=>'UTF-8']))。implode()、sprintf()、[] 陣列收集最後 join(),避免迴圈 .=。preg_match($pattern, $str) 重複使用同一 $pattern 變數。strlen(),預先存入變數。serialize()/unserialize():PHP 專用,保留型別、物件、參考。json_encode()/json_decode():跨語言、可讀、標準,不支援 Resource、物件需實作 JsonSerializable。igbinary_serialize():高效能二進位序列化擴展。