當前位置: 首頁> 最新文章列表> 新手如何使用mb_substr函數提取字符串的一部分?完整基礎教程看這裡

新手如何使用mb_substr函數提取字符串的一部分?完整基礎教程看這裡

gitbox 2025-06-11

在處理PHP 字符串時,尤其是含有中文或其他多字節字符的情況, mb_substr()是一個非常實用的函數。它是mbstring (Multibyte String)擴展的一部分,專門用來處理UTF-8 這樣的多字節編碼字符串。對於新手來說,理解並學會使用mb_substr()可以有效避免亂碼問題,確保字符串截取的準確性。

一、什麼是mb_substr()

mb_substr()用於從一個多字節字符串中截取子字符串。它的基本語法如下:

 mb_substr(string $string, int $start, ?int $length = null, ?string $encoding = null): string

參數說明:

  • $string :要操作的原字符串;

  • $start :起始位置(從0 開始計數);

  • $length (可選):要截取的長度;

  • $encoding (可選):字符編碼,默認使用內部編碼(通常是UTF-8)。

二、為什麼不用substr()

如果你的字符串是純英文,使用substr()通常不會出錯。但如果包含中文、日文或其他非ASCII 字符,用substr()就容易出現亂碼或截取錯誤。例如:

 $str = "你好,世界!";
echo substr($str, 0, 2);  // 輸出亂碼

上面的代碼輸出的是亂碼,因為substr()是按字節處理,而中文字符通常佔用3 個字節。

而使用mb_substr()則能正確處理:

 $str = "你好,世界!";
echo mb_substr($str, 0, 2, "UTF-8");  // 輸出:你好

三、實例講解

下面我們通過幾個例子來熟悉mb_substr()的用法。

示例1:從字符串中提取前幾個字符

$str = "PHP教程:從零開始學習";
echo mb_substr($str, 0, 5, "UTF-8");  // 輸出:PHP教程:從

示例2:截取字符串的中間部分

$str = "歡迎來到gitbox.net的PHP教學專區";
echo mb_substr($str, 4, 6, "UTF-8");  // 輸出:到gitbox.net

示例3:只指定起始位置,截取到末尾

$str = "學習PHP很有趣";
echo mb_substr($str, 3, null, "UTF-8");  // 輸出:PHP很有趣

示例4:使用負數索引從結尾開始截取

$str = "程序員的日常生活";
echo mb_substr($str, -4, 2, "UTF-8");  // 輸出:日常

四、如何設置默認編碼

可以使用mb_internal_encoding()設置默認編碼,避免每次都寫上"UTF-8"

 mb_internal_encoding("UTF-8");
$str = "深入淺出PHP開發";
echo mb_substr($str, 2, 3);  // 輸出:淺出PHP

五、總結

mb_substr()是PHP 處理多字節字符(如中文)字符串的標準工具,它比傳統的substr()更安全也更準確。掌握這個函數,對於做國際化項目、開發中文網站都是基礎能力。記住:當你面對非英文字符串,優先使用mb_substr()

想獲取更多PHP 基礎教程,歡迎訪問gitbox.net ,你會找到豐富的入門資源與代碼示例,助你快速成長為一名合格的PHP 開發者。