所以我有这个:
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(),这样我可以得到此输出?
答案 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);
}