在处理字符串时,去除特定长度的部分是一个常见需求。以逗号分隔的字符串中,目标是剔除长度小于等于 2 和大于等于 3 的部分。
提供的函数 p_str() 使用 count_strlen() 函数判断字符串长度。然而,count_strlen() 使用 iconv_strlen() 函数,后者只支持 utf-8、gbk、latin1 和 big5 编码。为了确保在不同的编码情况下都能正确计算长度,可以使用 mb_strlen() 函数,它支持多种编码类型。
修改后的代码如下:
立即学习“PHP免费学习笔记(深入)”;
function p_str($str) { $arr = explode(',', $str); $result = []; foreach ($arr as $value) { if (mb_strlen($value) > 2 && mb_strlen($value) < 3 && !in_array($value, $result)) { $result[] = $value; } } return implode(',', $result); }
此外,提供的替代方案直接使用 mb_strlen() 函数,并利用 array_filter() 函数过滤数组中的元素,删除不符合长度要求的字符串。这种方法同样有效,并且在不同的编码情况下也能正常工作。