2012-04-06 59 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