我正在尝试清理我的字符串,因此它只能由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");
?>
输出:爸爸妈妈测试
感谢