正确遍历 php 多字节 字符串 需使用 mb_strlen配合 for 循环、mb_str_split 函数或 preg_split 正则分割,确保中文等字符不被错误拆分。

如果您需要在 PHP 中逐个处理字符串中的字符,尤其是包含多 字节 字符(如中文)的字符串,正确的遍历方式至关重要。以下是几种可靠的方法来实现字符级别的遍历:
一、使用 for 循环结合 strlen 或 mb_strlen
通过 for 循环配合字符串长度函数,可以按索引访问每个字符。对于单字节 编码(如ASCII),使用 strlen 即可;对于多字节字符串(如 UTF-8),应使用 mb_strlen 以正确计算字符数。
1、初始化一个整数变量作为索引,从 0 开始。
2、使用 mb_strlen($String, ‘UTF-8’) 获取字符串的实际字符长度,避免多字节字符被错误拆分。
立即学习“PHP 免费学习笔记(深入)”;
3、在 for 循环中,通过索引访问每个字符:$string[$i]。
4、每次迭代输出或处理当前字符。
二、使用 mb_str_split 函数
PHP 7.4 及以上版本提供了 mb_str_split 函数,专门用于将多字节字符串按字符分割成数组,每个元素为一个独立字符,非常适合安全地遍历 Unicode 字符串。
1、调用 mb_str_split($string, 1, ‘UTF-8’),其中第二个参数为 1 表示每个片段一个字符,第三个参数指定 编码。
2、该函数返回一个包含各个字符的数组。
3、使用 foreach 循环遍历该数组,逐一处理每个字符。
三、使用 preg_split 进行正则分割
利用 正则表达式 引擎对 UTF- 8 字符串进行正确切分,适用于需要正则支持的复杂场景。
1、使用模式 ’/.|$/u‘ 配合 preg_split 函数,其中 ’u’ 修饰符启用 UTF- 8 模式。
2、执行 preg_split(‘/.|$/u‘, $string, -1, PREG_SPLIT_NO_EMPTY)得到字符数组。
3、遍历结果数组即可完成逐字符处理。