2012-07-14 59 views
1

我有一個textarea。用戶將文本輸入到textarea中,該文本可以包含用於格式化的換行符。我將這段文本保存到mySQL數據庫中,而不添加HTML br中斷。這看起來像「文字等等等等。\ n \ nText2等等等等。」在數據庫記錄中。PHP,mySQL,換行符和textareas

我使用echo nl2br($text);在常規HTML頁面上顯示文本,文本格式良好,兩行換行顯示爲兩個句子,並在它們之間留有空行。

當我發送相同的文字預填充用戶一個文本編輯他們的原始入口,我使用下面的代碼:

<textarea><?php echo $text;?></textarea>

我希望我會得到充滿文字textarea的是包括存儲在數據庫中的一些雙行換行符。在這種情況下,我不使用nl2br,因爲這樣做只會字面上顯示HTML字符(實際上不會創建換行符 - 換言之,會向用戶顯示br的6個字符)。相反,我得到的是剝離任何雙重新線條,所以兩條新線路背對背現在是單線新線路。單一的新生產線並沒有完全被剝離 - 他們只保留單一的新生產線。所以,簡而言之,當我發送帶有應該在文本行之間包含空白行的格式的文本時,我得到的只是單個新行,打破了文本的重要格式)。

從數據庫輸出文本到textarea時,如何保留所有換行符?

回答

1

這個工作對我來說:

<?php 
$txt = "line1\nline2\n\nline4\nline5"; 
?> 
<html> 

<body> 

<form> 
<textarea rows=10><?php echo $txt ?></textarea> 
</form> 

</body> 

</html> 

注缺乏line3文字和雙\n\n的。按照預期,在Firefox中加載此表單會爲line2/line4文本之間留出空行。

檢查您的文本是否在其他地方沒有被損壞,並且確實在數據庫中是雙線斷點。

+0

現在我有點誤解了...我將你的代碼直接複製到我的(完全跳過數據庫),我有4行文本沒有空行3.我看了看CSS和空白屬性沒有被我定義(瀏覽器默認是白色空間:預先包裝;在IE和Chrome中看起來相同) - 這可能是問題嗎? – key2starz 2012-07-14 22:21:23

+0

也嘗試過FF - 同樣的故事,並嘗試改變空白的CSS屬性。儘管\ n \ n - PHP的設置可能是罪魁禍首,但輸出絕對沒有兩個換行符? – key2starz 2012-07-14 22:29:23

+0

確認您的代碼是按原樣工作的 - 在將HTML加載到文本框後,必須修改我的HTML ...時間篩選JS並查看是否有任何內容被刪除... – key2starz 2012-07-14 22:46:14

1

你可以試試...回聲str_replace函數(「\ n」,「\ r \ n」,$ TXT)

這個簡單的讀取換行符並將它們轉換中明確由文字區域瞭解新行:) 希望這可以幫助。

謝謝。

0

我有同樣的問題,但有些故障排除後,我的結論是:

所有文字區域顯示\ n \ n與換行符不管價值,如果從數據庫中,會話或cookie的到來。

但是,如果HTML頁面被MINIFIED,空白行消失,因爲最終的HTML被縮小。有利於減少頁面大小的空格從文檔中清除。

檢查實際的HTML會證明這一點。

我使用我的OWN minify函數與輸出緩衝區,所以我只包含該頁面的一個例外。

=>我的意思是不要將擁有重要textarea的頁面monify!

在標題中的PHP代碼,會是這樣的:

$minify_exceptions = array(
    "page1.php", 
    "page2.php" 
); 
if (isset($file_route) && in_array($file_route, $minify_exceptions)) { 
    ob_start(); 
} else { 
    ob_start("minify_html"); 
} 

注: 獨此代碼nothing.If您有任何第三方的HTML minifier,或者HTML通過其他服務器例如管道谷歌網頁速度你需要找到一個地方的例外列表(發生MINIFY)

P.S.更聰明的方法是增強您的MINIFY功能,而不是MINIFY文本之間的textarea標籤