替换单个字符或多个字符

时间:2012-04-06 03:25:58

标签: php regex preg-replace

我想替换换行符\n。如果有一次出现,则会被<br>替换。如果连续两个或更多,则会被<br><br>替换。我可以做任何一种,但我不知道如何对同一个变量做两种情况。

3 个答案:

答案 0 :(得分:4)

如果要使用相同数量的换行符替换两个或更多,则str_replace应该有效。

str_replace("\n", '<br />', $text);

但是,如果你想用仅两个换行符替换三个换行符,那么你必须执行两次替换,至少一次使用正则表达式:

$text = preg_replace('/\n{2,}/', "<br /><br />", $text);
$text = str_replace("\n", '<br />', $text);

答案 1 :(得分:0)

怎么样:

$pattern = array("/\n\n+/", "/\n/");
$replacement = array('<br/><br/>',  '<br/>' );
$str = "The quick \nbrown fox \n\n\njumps over \n\nthe lazy dog.";

$result = preg_replace($pattern, $replacement, $str);

只需替换&lt; br /&gt;与&lt; br&gt;如果&lt; br&gt;是你真正想要的。

答案 2 :(得分:0)

作为Godwin解决方案的一个(希望更简单)变体,请尝试:

$text = str_replace("\n\n", '<br /><br />', $text);
$text = str_replace("\n", '<br />', $text);

这将用2个换行符替换任意2个连续的换行符,然后如果剩下任何单个换行符,它们将被单个换行符替换。这将实现1,2或3(或更多)连续换行符的替换。