如何在PHP中删除字符串中的重复字母

时间:2019-01-25 17:51:51

标签: php string duplicates

所以我有这个:

array(2) { [0]=> string(2) "cd" [1]=> string(6) "feegeg" }

我有这段代码:

foreach ($elem as $key => $value) {
    echo preg_replace('{(.)\1+}','$1',$value);
} 

哪个输出:

cdfegeg

但是我需要它来输出:

cdfeg

使用preg_replace()可能需要什么,或者可能不使用preg_replace(),这样我可以得到此输出?

2 个答案:

答案 0 :(得分:1)

我倾向于尽可能避免使用正则表达式。在这里,我将所有字母分成一个大数组,然后使用array_unique()进行重复数据删除:

$unique = array_unique(str_split(implode('', $elem)));

这为您提供了一个唯一字符数组,每个数组元素一个字符。如果您希望将它们作为字符串,只需内嵌数组:

$unique = implode('', array_unique(str_split(implode('', $elem))));

答案 1 :(得分:0)

多字节字符集解决方案:

$buffer = [];

foreach (['cd', 'feegeg'] as $string)
{
    $chars = preg_split('//u', $string, -1, PREG_SPLIT_NO_EMPTY);

    foreach ($chars as $index => $char)
    {
        if (isset($buffer[$char]))
        {
            unset($chars[$index]);
        }

        $buffer[$char] = true;
    }

    echo implode('', $chars);
}