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;
} |