當前位置: 首頁> 最新文章列表> PHP截取中文字符串的正確方法與技巧詳解

PHP截取中文字符串的正確方法與技巧詳解

gitbox 2025-07-28

PHP中截取中文字符串的常用方法

PHP作為流行的服務器端語言,經常需要對字符串進行截取操作。由於中文字符佔用多個字節,普通的字符串截取函數無法準確處理中文。本文將分享幾種實用的截取中文字符串的方法,助您輕鬆解決這一問題。

使用mb_substr()函數截取中文字符串

PHP內置的mb_substr()函數專為多字節字符設計,能夠準確截取中文字符串。它根據字符數量進行截取,而非簡單的字節數。

函數用法示例:

 <span class="fun">mb_substr(string $str, int $start, int $length, string $charset = &#39;UTF-8&#39;): string</span>

參數說明:

  • $str :待截取的字符串。
  • $start :起始位置,基於字符索引,0為起點。
  • $length :截取長度。
  • $charset :字符編碼,默認為UTF-8。

示例代碼:

 $str = "PHP中截取中文字符串";
$substr = mb_substr($str, 0, 6);
echo $substr;  // 輸出:"PHP中截"

通過正則表達式截取中文字符

除了內置函數,也可以利用正則表達式配合preg_match()實現對中文字符的截取。正則表達式能夠匹配指定範圍的Unicode中文字符。

示例代碼:

 $str = "PHP中截取中文字符串";
preg_match('/^([\x{4e00}-\x{9fa5}]+)/u', $str, $matches);
echo $matches[1];  // 輸出:"PHP"

自定義函數實現中文字符串截取

如果需要更靈活的截取邏輯,可以自定義函數,結合mb_strlen()mb_substr() ,實現帶省略號的截取效果。

 function substr_cn($str, $length) {
    $len = mb_strlen($str, 'UTF-8');
    if ($len > $length) {
        $str = mb_substr($str, 0, $length, 'UTF-8') . '...';
    }
    return $str;
}

$str = "PHP中截取中文字符串";
$substr = substr_cn($str, 6);
echo $substr;  // 輸出:"PHP中截..."

注意事項

使用以上方法時,需注意以下幾點:

  • 確保字符編碼正確。可通過mb_internal_encoding('UTF-8');設置默認編碼,避免編碼不一致導致截取錯誤。
  • 中文字符多字節特性,避免使用strlen()等單字節函數,推薦使用mb_strlen()計算字符串長度。
  • 截取時,保證起始位置和長度基於字符而非字節,以免截斷字符導致亂碼。

總結

截取中文字符串是PHP開發中常見且關鍵的需求。通過內置的mb_substr()函數、正則表達式匹配及自定義函數,可以靈活高效地完成中文字符串的截取工作。正確處理字符編碼和長度,是保證截取結果準確的關鍵。希望本文的方法能為您的項目開發提供實用參考。