正则表达式
代码如下 | 复制代码 |
echo preg_replace("/([^s]+)*\1{2,}([^s]+)*/",'',$string); |
用循环我给写了个
例1
代码如下 | 复制代码 |
$str = 'abccba 9872223s 12121212 ddd 1234560 vbwwc asasasasas zxzx qaz'; $source_array = explode(" ", $str); foreach($source_array as $key=>$item){ $current_str = str_split($item, 1); $current_array=array_count_values($current_str); foreach ($current_array as $k => $it){ if($it>=3) unset($source_array[$key]); } } var_dump($source_array); |
例2
代码如下 | 复制代码 |
<?php $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; } |
时间: 2024-10-12 06:39:22