2011-07-05 52 views
6

由於某種原因:preg_replace("/\\n/", "<br />", $string);不起作用。preg_replace n在字符串

以這種格式輸出字符串:blah blah blah\nblah blah blah即使在preg替換之後。

我想要做的就是改變如果是<br />

nl2br()也不起作用,但作爲它的正文,我不確定它是否應該。

感謝

** **更新

preg_replace作品在字符串中的一句話。如果您想更換字面\n而不是實際的新行:(

+4

它真的輸出'\ n'?你確定,它是一個換行符,而不僅僅是'\'和'n'? – KingCrunch

+0

不...這就是爲什麼我認爲nl2br不會工作,爲什麼我在我的preg中用'\\ n'替換來逃避'\' –

+0

我沒有插入到數據庫中......這只是在網站上顯示。 –

回答

5

試試這個

str_replace("\n", "<br />", $string); 
+0

使用單引號。 :)謝謝 –

+0

這可能適用於單引號(實際上,單引號preg_replace不適用於我的測試腳本),但它不能解釋爲什麼preg_replace不起作用。 – NotoriousWebmaster

+0

在大多數情況下,它不會使用單引號。 –

7

,嘗試:

<?php 
echo preg_replace("/\\\\n/", "<br />", 'Hello\nWorld'); 

通知反斜線數量的雙引號括起來。字符串/\\\\n/被PHP引擎解釋爲/\\n/。傳遞給preg引擎時該字符串被解釋爲文字\n

請注意,這兩個PHP都會將"\n"解釋爲ASCII字符0x0A。同樣,preg引擎會將'/\n/'解釋爲換行符(不完全確定哪個/哪個)。

+0

由於'Hello \ nWorld''是單引號的,因此您不會測試替換一個acutal換行符。這樣做:'echo preg_replace(「/ \\ n /」,「」,「this that」);'(通過按Enter鍵並在下一行關閉引號來替換「this」和「that」之間的空格。 )。 –

4

您是否在RegEx上使用了多行修飾符?

preg_replace("/\\n/m", "<br />", $string); 
+0

+1'\ n'需要多行模式。 – hakre

+0

在這種情況下,使用附加轉義符的其他答案是正確的答案。我遇到了同樣的問題,文本的字符'\'後面跟着字符'n',目標是用單個0x0A換行符替換它。 – KenB