
PHP高效去除字符串中特定长度子串
在PHP字符串处理中,经常需要根据长度筛选子串。例如,给定一个逗号分隔的字符串,如何只保留长度在特定范围内的子串?
例如,字符串 “1,22,333,啊,啊啊,啊啊啊,4444″,目标是保留长度大于1且小于4的子串,得到结果 “22,333,啊啊,啊啊啊”。
原始代码存在以下问题:
- 冗余的长度计算函数: 使用自定义函数 count_strlen 计算字符串长度,增加了代码复杂度。PHP内置函数 mb_strlen 更高效。
- 条件判断错误: 原始代码的条件判断逻辑存在错误。
改进后的代码如下:
立即学习“PHP免费学习笔记(深入)”;
<?php
$str = '1,22,333,啊,啊啊,啊啊啊,4444';
$strarr = explode(',', $str);
$result = array_filter($strarr, function ($s) {
$len = mb_strlen($s, 'utf8');
return $len > 1 && $len < 4;
});
$result = implode(',', $result);
echo $result; // 输出:22,333,啊啊,啊啊啊
?>
登录后复制
此代码使用 mb_strlen 函数正确计算UTF-8编码字符串长度,并利用 array_filter 函数高效筛选出满足条件的子串,最后用 implode 函数将结果重新组合成逗号分隔的字符串。 这比原始代码更简洁、更高效。 避免了不必要的函数调用和错误的逻辑判断。
以上就是PHP处理字符串时,如何高效去除特定长度的部分?的详细内容,更多请关注php中文网其它相关文章!