【问题标题】:How to remove duplicate letters in string in PHP如何在PHP中删除字符串中的重复字母
【发布时间】:2019-06-19 14:18:22
【问题描述】:

所以我有这个:

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() 做什么,这样我才能得到这个输出?

【问题讨论】:

标签: php string duplicates


【解决方案1】:

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

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

这为您提供了一个唯一字符数组,每个数组元素一个字符。如果您更喜欢将它们作为字符串,只需内爆数组即可:

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

【讨论】:

  • 您的解决方案仅适用于 1 字节字符集(默认 ASCII 仅适用于英语和西班牙语字母)。
【解决方案2】:

多字节字符集解决方案:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 2021-09-10
    • 2013-07-01
    相关资源
    最近更新 更多