2012-09-27 81 views
0

我正在向服務器請求數據,並且當我將響應回顯到頁面上時,沒有任何換行符,但是當我查看頁面源時,換行符。換行符中的換行符?

這怎麼可能? (即當我查看頁面源代碼時,如何看到換行符?)

使用<pre>標籤我可以使用換行符在頁面上顯示數據,但我想要解析分隔行的字符串我試圖瞭解如何在字符串中找到換行符。

有意義嗎?

謝謝!

+0

HTML忽略打破空白,除了內'pre'塊或者CSS屬性'白色space'設置爲['pre','預wrap'或'pre-line'](http://www.quirksmode.org/css/whitespace.html)。 –

+0

您是否有對服務器響應的控制權? –

+0

瀏覽器解析html而不是純文本。 – 2012-09-27 00:23:00

回答

5

您沒有看到換行符,因爲HTML不會在標記中顯示換行符。你特別需要編碼換行符。最簡單的方法是用<br />代替\r\n

+0

因此,即使「\ r \ n」實際上是在字符串中,您是說當我在頁面上回顯字符串時,瀏覽器會隱藏這些字符? – Nate

+0

它「忽略」他們,@Nate。 (至少在這種情況下,會造成字符之間的間隔不止。)請參閱:http://www.w3.org/TR/html401/struct/text.html#whitespace –

1

在HTML行中剎車不出現。如果要線路制動器出現,請使用<br/>。在PHP中您可以使用nl2br到線剎車轉移到<br/>

要更換線剎車自己:基於

$text = str_replace(array("/r/n","/r","/n"), "<br/>", $text); 
0

ASCII換行有什麼是在瀏覽器中顯示沒有影響(與文本域的可能是個例外)。

要使換行符可見,請嘗試在數據發送到客戶端之前或之後用<br />替換換行符。

對於服務器端試試這個:

echo str_replace(PHP_EOL, '<br />', $output); 
+0

請注意,PHP_EOL表示行結束。 ASCII 10. – Zaffy

+0

它用於匹配或創建新行/中斷,其具體值取決於操作系統定義的換行符。 – Flosculus