我正在尝试清理我的字符串,因此只能使用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
答案 0 :(得分:2)
使用简单的(.)\1+
我正在尝试清理我的字符串,因此只能使用AZ(使用unicode),0-9和"。",",",& #34; - "符号。
因此,在您的情况下,它将是([A-Z0-9.,-])\1
说明:这将捕获已捕获组中的字符,并检查它是否与\1+
重复。
匹配应替换为\1
,即单个此类字符。
<强> Regex101 Demo 强>
<强> Ideone Demo 强>
答案 1 :(得分:1)
请检查并告诉我
<?php
echo preg_replace("/(.)\\1+/", "$1", "Maama-Paapaa-Test");
?>
输出: Mama-Papa-Test
由于