2013-09-30 72 views
3

目前我正在上存儲textarea的段落從textarea存儲換行符,存儲到數據庫並顯示在前端?

<textarea rows="10"></textarea> 

我可以保存全部內容,但問題是它不包括換行符。我想知道從textarea到數據庫存儲空間/換行符的最佳做法是什麼。另外,我需要阻止用戶插入textarea內部。

這是好的嗎?

e.g. 
text=replace(text,"/n","<br>") 
text=replace(text," ","&nbsp;") 
text=replace(text,"<script>","") 
text=replace(text,"</script>","") 

感謝

+2

它存儲換行符,你只是期待bowser使用它們,當瀏覽器期待html-短解'nl2br()' – 2013-09-30 02:03:39

+0

謝謝。這意味着我只需要直接將數據插入數據庫而不是進行任何修改? – user782104

+1

PHP字符串中的換行符是''\ n「'而不是'/ n' – mario

回答

5

它確實店換行,但是當你在做的HTML輸出,你還看不出來。 使用nl2br()函數可將換行符轉換爲<br />標記,以便您可以在HTML中看到換行符。

如果你想在文本中防止一些HTML標籤 - 使用strip_tags()函數(如果你願意,你可以允許一些標籤)。不要忘記使用mysql_real_escape_string()或類似的東西來逃避數據。

3

除了保羅提出的另一個選項是

  1. 使用<pre>標籤,實際上剎車線與/ n的..這樣你不需要處理的文字.. 你將不得不自定義樣式作爲默認值的<pre>塊類似於控制檯字體和樣式。
  2. 使用具有自定義樣式的禁用標籤來避免對文本進行操作。

這裏是顯示這兩個例子小提琴(我用JS注入的值,但是當你從PHP注入以及它應該工作): http://jsfiddle.net/BvynR/

<pre id="pre"> 
</pre> 
<textarea id="textarea" disabled="disabled"> 
</textarea> 


var str = "Hello I'm a pre-formatedt text \nand this is a new line"; 
$("#pre").html(str); 

$("#textarea").text(str); 


#pre 
{ 
    font-family: verdana,helvetica,arial,sans-serif; 
    font-size:1em; 
} 

#textarea 
{ 
    font-family: verdana,helvetica,arial,sans-serif; 
    font-size:1em; 
    width:100%; 
    border:none; 
    background: none; 
} 
1

如果是我,我將按照從用戶那裏收到的數據插入數據。這是因爲您可能需要在將來某個時候提取該數據,並且而不是將其包含在HTML中 - 例如,用於報告或將其放入電子表格或其他信息。

當然,您還需要特別注意將數據提取出來並顯示在頁面上 - 但無論如何您應該這樣做,而且您不希望依賴您的輸入衛生設施是否完美 - 您可能會需要在將來替換/更新它。

相關問題