Php 替换多个相同的字母

Php 替换多个相同的字母,php,regex,Php,Regex,我需要用相同的三个字母替换一行中的多个相同字母(仅A-Z或A-Z,而不是数字)。有人能帮我弄一个花样串吗 例如: 输入:无MEK PUCES CUDAK AVVVVVVVVVV VASMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 输出:

我需要用相同的三个字母替换一行中的多个相同字母(仅A-Z或A-Z,而不是数字)。有人能帮我弄一个花样串吗

例如:

输入:无MEK PUCES CUDAK AVVVVVVVVVV VASMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

输出:无MEK PUCES CUDAK AVVV VASMAAA


可以将正则表达式与反向引用一起使用:

preg_replace('/(.)\1+/', '$1', $str);
()
匹配任何字符并将其放入捕获组
\1
是对同一组的引用,
+
限定了前一个标记可能出现一次或多次。因此,这将用一个字符替换至少两个相同字符的任何运行

如果希望保留多个字符,如示例所示,可以使用以下方法:

preg_replace('/(.)\1{2,}/', '$1$1$1', $str);
如果需要限制字符集,则只需使用组(
([a-zA-Z])
)和反向引用(
\1
)通过字符类交换


除了3个字母外,你需要全部替换?我知道这可能是重复的,但它不正确。这将取代一切,只有一个。我只需要A-Z,A-Z。。替换为三个相同的字母。是的,这是正确的,还需要(.)改为([A-Za-z]),这是我在最后一句中写的,是的。
$text = "NO MEK PUCES CUDAK AVVVVVVVVVVVVVVVVVVVVVVVVV VASMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";    
echo preg_replace('/([A-Za-z])\1{3,}/', "$1$1$1", $text);
# => NO MEK PUCES CUDAK AVVV VASMAAA