$str = '蚂蚁蚂蚁学院学院,我非常爱爱爱爱爱你!522200011111333311111444'; function mbstringtoarray($str,$charset) { $strlen=mb_strlen($str); while($strlen){ $array[]=mb_substr($str,0,1,$charset); $str=mb_substr($str,1,$strlen,$charset); $strlen=mb_strlen($str); } return $array; } $arr = mbstringtoarray($str,"gbk"); //分割字符串 $arr = array_unique($arr); //过滤重复字符 $str = implode('', $arr); //合并数组 echo $str; ?> 另一种办法 preg_replace_callback() 就更简单了,不过 preg_replace() 可以使用e修饰符来实现PREG_REPLACE_EVAL,能达到 差不多的效果
代码如下 | | echo preg_replace('/([^s] )/e','check("\1")',$string); function check($str) { $tmp=count_chars($str,1); sort($tmp); return array_pop($tmp)>2?"":$str; } |
|