在php中只用一个字符替换重复字符

时间:2014-09-02 09:10:46

标签: php regex

我想检查字符串是否包含大于或等于字母/数字的3倍,并将其替换为只有一个字母/数字。例如:

IIIII havvvvve a bigggg tesssssttttt tomorrow soooo iiii 2222551111 haveeee to do this rightttttt

变得像这样

I have a big test tomorrow so i 2551 have to do this right. 

如何使用preg_replace完成此操作?

2 个答案:

答案 0 :(得分:3)

<强>正则表达式:

([A-Za-z0-9])\1\1+

这将匹配超过或等于字母/数字的3倍并捕获第一个字母或数字。最后,整个字符串被组索引1中的字符替换。

替换字符串:

\1

DEMO

<?php
$text = 'IIIII havvvvve a bigggg tesssssttttt tomorrow soooo iiii 2222551111 haveeee to do this rightttttt';
$pattern = '~([A-Za-z0-9])\1\1+~';
echo preg_replace($pattern,'\1',$text);
?>

<强>输出:

I have a big test tomorrow so i 2551 have to do this right

答案 1 :(得分:2)

([A-Za-z0-9])(\1{2,})?

试试这个。$ 1。

参见演示..

http://regex101.com/r/sA7pZ0/27