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

PHP 字串完整指南:四種定義方式、變數解析、編碼處理與效能優化

     編輯:PHP 綜合知識

四種定義方式

方式語法變數解析轉義序列適用場景
單引號'hello'否僅 \'、\\純靜態字串、效能最佳
雙引號"hello"是完整支援 \n \r \t \$ \" \\ 等需插入變數、換行
Heredoc<<<EOT ... EOT;是同雙引號,無需轉義引號大段 HTML/SQL/多行文字
Nowdoc<<<'EOT' ... EOT;否無轉義(如單引號)大段靜態文字、程式碼片段

Heredoc/Nowdoc 關鍵規則

  • 結束標識必須獨佔一行、行首開始、無縮進、無前後空白(僅允許分號)。
  • 結束標識前必須有換行符(\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()

字串轉數字規則

  • 字串開頭為合法數字(可含符號、小數點、科學記號) → 轉為對應 Integer/Float。
  • 否則 → 0。
  • "123abc" → 123, "0x1A" → 0(PHP 不支援十六進位字串轉換),"1.2e3" → 1200。

編碼處理最佳實踐

  1. 專案統一 UTF-8:檔案儲存、資料庫 utf8mb4、HTML <meta charset="UTF-8">、PHP default_charset = "UTF-8"。
  2. 多位元組字串必用 mb_* 函數:mb_strlen(), mb_substr(), mb_strpos(), mb_strtolower(), mb_convert_encoding()。
  3. 資料庫連線設定字元集:PDO charset=utf8mb4、mysqli set_charset('utf8mb4')。
  4. 輸出編碼:htmlspecialchars($str, ENT_QUOTES, 'UTF-8')。
  5. 檔案讀寫指定編碼: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():高效能二進位序列化擴展。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved