2012-04-06 24 views
0

我想替换换行符\n。如果有一个事件被替换为<br>。如果连续有两个或更多,它将被替换为<br><br>。我可以做或者但我不知道如何做同一个变量。替换单个字符或字符的倍数

+0

你的问题非常模糊,你没有提供任何代码来检查。你是否试图从mysql查询中替换行? – Norse 2012-04-06 03:33:21

+0

@Norse没有其他任何东西了。如果有一个变量被'\ n'替换为'
'。如果它有'\ n \ n','\ n \ n \ n'等等被替换为'

'。 – qitch 2012-04-06 03:36:16

回答

4

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

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

但是,如果你想只有两个线更换三块换行符打破那么你就必须使用正则表达式执行两个内容替换,至少一个:

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

这将工作,但他也问如何替换两个以上的换行符。 – Norse 2012-04-06 03:42:14

+0

{2,}表示两个或更多。第一个示例将所有'\ n'替换为'
',第二个示例用'

'替换出现连续两次或更多次出现的所有'\ n',然后执行替换单次出现的第一步。 – Godwin 2012-04-06 03:45:08

+0

啊,对我来说是一个很好的教训!给予好评! – Norse 2012-04-06 03:46:21

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>是你真正想要的。

0

由于戈德温的解决方案的(希望简单)的变体,尝试:

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

这将取代任何连续2个换行符2个换行符,那么如果有任何一个换行符剩余,他们将被替换单行中断。这将实现你的换人1,2或3(或更多)连续换行。

+0

这将用三个换行符替换三个连续的换行符,但是@qitch想要一个只用两个换行符替换三个换行符的解决方案。 – Godwin 2012-04-06 05:21:16