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

PHP 數組與字符串轉換函數大全:explode/implode、str_split、strpos、substr、strlen、大小寫轉換實戰速查表

     編輯:PHP 綜合知識

字符串與數組互轉是 PHP 日常開發高頻操作。本文系統梳理 8 大核心函數族,含語法、參數、返回值、典型示例、性能差異與避坑指南,適合打印作桌面速查卡。

一、字符串 → 數組

1. explode(separator, string, limit) — 按分隔符分割

$types = "doc|docx|ppt|pptx|xls|xlsx|zip|rar";
$arr = explode('|', $types);
// ['doc','docx','ppt','pptx','xls','xlsx','zip','rar']

// limit > 0:最多返回 limit 個元素,最後一個包含剩餘字符串
explode('|', 'a|b|c', 2); // ['a', 'b|c']
// limit < 0:返回除最後 -limit 個元素外的所有
explode('|', 'a|b|c', -1); // ['a', 'b']
// limit = 0:同 1

注意:分隔符為空字符串會報錯;需分割多字符分隔符用 preg_split。

2. str_split(string, length) — 按固定長度分割

$str = "www.baidu.com";
str_split($str);      // ['w','w','w','.','b','a','i','d','u','.','c','o','m']
str_split($str, 3);   // ['www','.ba','idu','.co','m']

// length < 1 返回 false
// length > 字符串長度 返回整個字符串為單元素數組

多字節字符串:中文請用 mb_str_split($str, 1, 'UTF-8') (PHP 7.4+) 或循環 mb_substr。

3. preg_split(pattern, string, limit, flags) — 正則分割

preg_split('/\s+/', "a  b\tc\n d"); // ['a','b','c','d'] 多種空白
preg_split('/[,;]/', "a,b;c");      // ['a','b','c'] 多種分隔符

二、數組 → 字符串

4. implode(separator, array) / join(separator, array) — 合併

$arr = ['Hello','World!','Beautiful','Day!'];
implode(' ', $arr); // "Hello World! Beautiful Day!"
implode('', $arr);  // "HelloWorld!BeautifulDay!"

// 歷史參數順序:implode(array) 也合法,但建議雙參數
// separator 為空字符串時直接拼接

三、字符串查找與位置

5. strpos(haystack, needle, offset) — 首次出現位置(區分大小寫)

$str = "HellO neo";
strpos($str, 'O'); // 4
strpos($str, 'o'); // 8
strpos($str, 'x'); // false (需用 === false 判斷)
strpos($str, 'l', 3); // 3 (從索引 3 開始找)

陷阱:返回 0 表示在開頭,必須 === false 判斷不存在。

6. stripos / strrpos / strripos — 不區分大小寫 / 最後一次 / 最後一次不區分大小寫

四、字符串截取

7. substr(string, offset, length) — 截取子串

$str = "Hello world!";
substr($str, 0);       // "Hello world!"
substr($str, 6, 5);   // "world"
substr($str, -6);     // "world!" (負數從末尾倒數)
substr($str, -6, 5);  // "world"
substr($str, 0, -1);  // "Hello world" (去掉最後 1 字符)

多字節:mb_substr($str, $start, $len, 'UTF-8')。

五、字符串長度

8. strlen(string) — 字節長度

strlen("Hello world!"); // 12
strlen("中文");         // 6 (UTF-8 每字 3 字節)
mb_strlen("中文", 'UTF-8'); // 2

六、大小寫轉換

函數說明示例
strtolower全轉小寫"HELLO" → "hello"
strtoupper全轉大寫"hello" → "HELLO"
ucfirst首字母大寫"hello" → "Hello"
ucwords每個單詞首字母大寫"hello world" → "Hello World"
lcfirst首字母小寫 (PHP 5.3+)"Hello" → "hello"
mb_strtolower/upper多字節安全版需指定編碼

七、性能與選型建議

場景推薦避免
固定分隔符分割explodepreg_split (慢 3-5x)
多字符/正則分隔符preg_split多次 explode
固定長度分割str_splitsubstr 循環
大數組合併implodeforeach 拼接 (慢、內存峰值高)
查找是否包含strpos !== falsepreg_match (無捕獲組時慢)
中文長度/截取mb_strlen/mb_substrstrlen/substr (會按字節截斷)

八、常見錯誤速查

  1. explode('', $str) → ValueError(PHP 8)或 Warning。
  2. strpos 返回 0 當作 false → 用 === false。
  3. substr($str, -1) 取最後一字符,substr($str, -2, 1) 取倒數第二字符。
  4. implode 參數順序顛倒在 PHP 7.4+ 棄用,PHP 8.0 移除。
  5. 未設置 mbstring.internal_encoding 導致 mb_* 函數行為不一致,建議入口 mb_internal_encoding('UTF-8')。

掌握這 8 大函數族的參數細節與性能特徵,能寫出更簡潔、高效、無 Bug 的字符串處理代碼。建議收藏本表,代碼審查時對照檢查。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved