使用mb_substr函数可以安全截取中文字符串而不出现乱码。只需指定目标字符串、起始位置、截取长度以及正确的字符编码(如utf-8),该函数会按字符而非字节进行切割,从而避免截断多字节字符导致的损坏。

mb_substr与substr在处理中文时的区别是什么
substr按字节截取,遇到UTF-8多字节字符中间会被切断产生乱码;mb_substr按字符数截取,能完整保留汉字结构。

$str = "你好世界"; echo substr($str, 0, 3); // 输出乱码 echo mb_substr($str, 0, 3, "UTF-8"); // 输出:你好世
如果未指定编码参数会发生什么
不指定编码时,mb_substr会使用php.ini中的internal_encoding或默认ISO-8859-1,导致中文被错误解析为乱码。必须显式传入"UTF-8"等正确编码。

$str = "测试中文"; echo mb_substr($str, 0, 2); // 可能乱码,取决于ini设置 echo mb_substr($str, 0, 2, "UTF-8"); // 正确输出:测试
当字符串包含混合ASCII和中文时如何确保准确截取
mb_substr统一按字符计数,无论单字节还是多字节都视为一个字符单位,因此混合内容也能精准截取,无需额外判断。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











