删除字符串中重复的字符


Remove duplicated chars in string

我正在尝试清理我的字符串,因此它只能由A-Z(使用unicode)、0-9和"."、"、"、"-"符号组成。

示例

Maama-Paapaa-Test

必须是

Mama-Papa-Test

到目前为止我做了什么

$string = 'lietuviškos';
$string .= ' +!@#$%^&*()(,,,*&^%AAAA-Sdas.. .d#$%@%@dasf0000-!!@@##$$%%^^&&**())__-+---++aaaa';
$string .= ' klaviatūros-įgūdžiams';
$string = preg_replace('/[^'p{L}'p{N} '-]/u', null, $string);
$string = preg_replace('/[,-.]/u', null, $string);
$string = ucfirst(strtolower($string));
var_dump($string);

这里唯一的问题是,如果字符/符号在字符串中的某个地方重复,它会从字符串中的任何地方删除该字符/符号。

所以

Maama-Paapaa-Test

成为

Mm-Pp-Test

使用简单的(.)'1+ 有什么问题

我正在尝试清理我的字符串,所以它只能由A-Z(使用unicode)、0-9和"."、"、"、"-"符号组成。

所以在你的情况下,它将是([A-Z0-9.,-])'1

说明:这将捕获捕获组中的字符,并检查是否使用'1+重复该操作。

Match应替换为'1,即单个此类字符。

Regex101演示

Ideone演示

请检查并告知

<?php echo preg_replace("/(.)''1+/", "$1", "Maama-Paapaa-Test"); ?>

输出:爸爸妈妈测试

感谢