Regex
| 代碼如下 |
複製代碼 |
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; } |