explode() 是 PHP 將字串依指定分隔符拆分為陣列的核心函數。本文詳細解析其參數行為、limit 參數的進階用法、常見陷阱(如空字串、分隔符在首尾)及效能優化建議,助你精準掌握字串分割技巧。
explode(string $separator, string $string, int $limit = PHP_INT_MAX): array
"::")<?php
$str = '朝陽區,海澱區,西城區,東城區,豐台區';
$arr = explode(',', $str);
print_r($arr);
?>
輸出:
Array
(
[0] => 朝陽區
[1] => 海澱區
[2] => 西城區
[3] => 東城區
[4] => 豐台區
)
<?php
$str = 'a,b,c,d,e';
explode(',', $str, 3);
// [0=>'a', 1=>'b', 2=>'c,d,e'] // 第3元素包含剩餘
?>
<?php
$str = 'a,b,c,d,e';
explode(',', $str, -2);
// [0=>'a', 1=>'b', 2=>'c'] // 排除最後 2 個
?>
<?php
explode(',', '');
// [0 => ''] // 返回含 1 個空字串的陣列,非空陣列!
?>
解法:$str ? explode(',', $str) : []
<?php
explode(',', ',a,b,');
// [0=>'', 1=>'a', 2=>'b', 3=>''] // 首尾產生空元素
?>
解法:array_filter(explode(',', $str)) 移除空值
<?php
explode(',', 'abc');
// [0 => 'abc'] // 返回原字串為單一元素
?>
<?php
// 多種分隔符:逗號、分號、空白
preg_split('/[,;\\s]+/', 'a,b;c d');
// [0=>'a', 1=>'b', 2=>'c', 3=>'d']
?>
explode() 低 3-5 倍<?php
str_getcsv('"a,b",c,"d,e"');
// [0=>'a,b', 1=>'c', 2=>'d,e'] // 正確處理引號內逗號
?>
| 函數 | 相對速度 | 適用場景 |
|---|---|---|
explode() | 1x (基準) | 固定單一分隔符、高頻呼叫 |
preg_split() | 0.2-0.3x | 複雜分隔規則、正則需求 |
strtok() | 0.8x | 逐項處理、記憶體敏感 |
array_filter() 移除首尾分隔符產生的空元素掌握 explode() 的 limit 參數與邊界行為,能讓你在處理 CSV 匯入、日誌解析、URL 路由分割等場景時,寫出更精準、高效的程式碼。記住:簡單分隔用 explode,複雜規則用 preg_split,CSV 專用 str_getcsv。