php 去除重复的字符串程序代码
在开发时我们可能会经常要去除重复的字符串,下面我以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,代码如下:
<?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,能达到差不多的效果,代码如下:
<?php
echo preg_replace('/([^s]+)/e', 'check("1")', $string);
function check($str) {
$tmp = count_chars($str, 1);
sort($tmp);
return array_pop($tmp) > 2 ? "" : $str;
}
?>本文地址:http://www.phprm.com/develop/fs4017.html
转载随意,但请附上文章地址:-)