2010-11-22 50 views
0

這是我的完整網頁,直接從here取得php代碼。然而,頁面上的所有文本都呈現在一行上?換行符在PHP中不起作用?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Untitled Document</title> 
</head> 
<body> 

<?php 

echo "This spans 
multiple lines. The newlines will be 
output as well"; 

echo "This spans\nmultiple lines. The newlines will be\noutput as well."; 

?> 

</body> 
</html> 

回答

2

HTML不支持換行符,因此您必須使用<br>

您可以使用nl2br將您的字符串中的所有\n轉換爲<br>,這將生成所需的輸出。

+0

@ Anthony-
的工作 - 但我仍然很疑惑爲什麼經常\ n新行不會,考慮它是直接從文檔? – Yarin 2010-11-22 02:32:48

+0

@Yarin:請參閱我們的其他答案以獲得更清晰的解釋。 – BoltClock 2010-11-22 02:33:31

+0

這個鏈接是指我所指的:http://php.net/manual/en/function.echo.php – Yarin 2010-11-22 02:34:32

1

HTML會將連續的空白(在大多數情況下)合併爲單個空格字符。您需要輸出段落(<p>...</p>)或帶邊框或填充的其他標籤,或輸出明確的換行符(<br>)。

3

換行符在您的源代碼中。但是,瀏覽器不會將換行符顯示爲頁面中的換行符,因此您需要使用換行符標記(<br />)。

+0

加上一個Bolty! – alex 2010-11-22 02:39:59

1

換行確實是打印出來的,但HTML並不關心空格(除非你明確告訴它,查看pre元素和white-space: pre)。

瀏覽器將在查看HTML時將所有的\s轉換爲一個空格。

1

哦,新的線路在那裏,他們正在工作。在HTML (即,當您右鍵單擊瀏覽器並選擇查看頁面源),而不是在瀏覽器中顯示的結果。你會看到那裏的新線。

問題是,HTML本身並不關心你如何格式化你的空白。對於HTML所有的空白空間,無論是製表符,新行還是整個空間都被翻譯爲單個空間。

要使HTML顯示換行符,您必須使用HTML標記,例如<pre>,<p><br/>

我發現它更容易在PHP程序中創建我自己的echoLine函數,該函數在\n<br/>中均添加。這樣,我可以在網頁源代碼和HTML顯示中看到它。

+0

好建議 - 謝謝 – Yarin 2010-11-22 15:59:57