0

我想更换换行符\n。如果出现一次,则将其替换为<br>. 如果连续有两个或更多,则将其替换为<br><br>. 我可以做任何一个,但我不确定如何为同一个变量做这两个。

4

3 回答 3

4

如果你想用相同数量的换行符替换两个或更多,str_replace 应该可以工作。

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

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

$text = preg_replace('/\n{2,}/', "<br /><br />", $text);
$text = str_replace("\n", '<br />', $text);
于 2012-04-06T03:40:29.327 回答
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);

如果 <br> 是您真正想要的,只需将 <br/> 替换为 <br>。

于 2012-04-06T04:02:00.073 回答
0

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

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

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

于 2012-04-06T04:29:55.933 回答