PHP正则表达式用单个字符替换双重或多个字符

时间:2012-12-20 16:52:04

标签: php regex replace preg-replace double

以下为什么不起作用?

<?php
 $text = 'Hell   looo   w  orlldddddd!!!!!!!!!';
 $sanitized = preg_replace("/(\w|\s)\1{1,}/mi","$1",$text);
 echo $sanitized;
 ?>

预期输出应为:     Hel lo w or orld!

谢谢

2 个答案:

答案 0 :(得分:1)

试试这个:

$text = 'Hell   looo   w  orlldddddd!!!!!!!!!';
$sanitized = preg_replace('/(\w|\s|.)\\1+/', '$1',$text);
 echo $sanitized;

输出:

Hel lo w orld!

在这种情况下,这是使用正则表达式所能做到的最佳效果。

答案 1 :(得分:-1)

你忘记了正则表达式中的斜杠:

/(\w|\s)/\1{1,}/mi