对字符串去重复php,php 去除重复的字符串程序代码

正则表达式

 代码如下

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

 代码如下

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

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值