PHP去掉字符串中的重复字符

已邀请:
匿名用户

匿名用户

赞同来自:

如果字符串中无汉字,都是ASCII字符那非常简单:
<?php
$str = 'aabbcc11333332.axyz';
echo implode("",array_unique(str_split($str, 1)));
//输出 abc132.xyz

如果字符串中有汉字,而且编码为UTF8,可以用下面方法:
<?php
$str="爱爱E爱EE族族";
$arr = preg_split("/(?<!^)(?!$)/u", $str); //转换成数组
$arr = array_unique($arr); //除去重复字符
echo implode("", $arr);  //还原成字符串
//输出: 爱E族
 
如果字符串中有汉字,而且编码不为UTF8,可以用下面方法(可以指定编码):
<?php
//按长度分割含中文字符串的自定义函数
function mb_str_split($str, $length=1, $encoding='UTF-8') {
    $arr = array();
    for($i=0; $i<mb_strlen($str, $encoding); $i+=$length) {
        $arr[] = mb_substr($str, $i, $length, $encoding);
    }
    return $arr;
}

$arr = mb_str_split("爱爱爱E族族", 1, 'GBK');
$arr = array_unique($arr); //除去重复字符
echo implode("", $arr);  //还原成字符串
//输出: 爱E族

要回复问题请先登录注册