当前位置: 首页> 最新文章列表> 新手如何使用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 开发者。