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

PHP 字串分割完整指南:str_split、explode、substr 依長度截取與分隔符分割

     編輯:PHP 相關知識

前言

PHP 提供多種字串分割函式,適用於不同場景。本文系統整理 `str_split()` (固定長度)、`explode()` (分隔符)、`substr()` + `strlen()` (位置長度截取) 的語法、差異與選用指南。

函式對照表

函式用途參數回傳範例
str_split固定長度切割(string $str, int $length = 1)陣列str_split('1234', 2) → ['12','34']
explode分隔符分割(string $separator, string $str, int $limit = PHP_INT_MAX)陣列explode(' ', '1 2 3 4') → ['1','2','3','4']
substr位置長度截取(string $str, int $offset, ?int $length)字串substr('abcdef', 1, 3) → 'bcd'
mb_substr多位元組安全截取(string $str, int $offset, ?int $length, string $encoding)字串mb_substr('中文測試', 0, 2, 'UTF-8') → '中文'
preg_split正則分割(string $pattern, string $str, int $limit, int $flags)陣列preg_split('/\s+/', 'a b c') → ['a','b','c']

詳細範例

1. str_split() - 固定長度切割

<?php
$str = '1234';
print_r(str_split($str));       // ['1','2','3','4'] (預設長度 1)
print_r(str_split($str, 2));    // ['12','34']
print_r(str_split($str, 3));    // ['123','4']

2. explode() - 分隔符分割

<?php
$str = '1 2 3 4';
print_r(explode(' ', $str));    // ['1','2','3','4']
$csv = 'a,b,c';
print_r(explode(',', $csv));    // ['a','b','c']
// 限制分割筆數
print_r(explode(',', 'a,b,c,d', 2)); // ['a', 'b,c,d']

3. substr() + strlen() - 文章摘要截取

<?php
$content = $row['game_detail'];
$len = strlen($content); // 位元組長度
if ($len > 102) {
    echo substr($content, 0, 102) . '...';
} else {
    echo $content;
}
// ⚠ 中文環境請用 mb_strlen / mb_substr 避免截半字元

4. 多位元組安全截取 (中文/日文/韓文/Emoji)

<?php
$str = 'PHP中文截取測試';
$maxChars = 10;
if (mb_strlen($str, 'UTF-8') > $maxChars) {
    echo mb_substr($str, 0, $maxChars, 'UTF-8') . '...';
} else {
    echo $str;
}

選用決策樹

  1. 依**固定字元數**切割 → str_split() (ASCII) / mb_str_split() (PHP 7.4+, 多位元組)
  2. 依**特定分隔符**分割 → explode() (最快)
  3. 依**複雜模式/多種分隔符**分割 → preg_split()
  4. **文章摘要、標題截斷** → mb_substr() + mb_strlen() (字元數) 或視覺寬度截取
  5. **資料庫 VARCHAR 位元組限制** → 位元組級安全截取函式

效能提醒

  • explode() 為 C 級實作,極快,大量資料首選。
  • preg_split() 啟動正則引擎,較慢,僅在必要時使用。
  • mb_* 函式有多位元組檢查開銷,純 ASCII 場景優先用非 mb 版本。

總結

字串分割核心在於**明確分割依據**:固定長度、分隔符、正則模式、字元數/位元組數截取。依據場景選用對應函式,並注意多位元組字串必須使用 `mb_*` 系列函式,才能獲得正確且高效的結果。

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