php中textarea文字框輸入內容斷行符號換行('\n')的處理方法

來源:互聯網
上載者:User
因為textarea中換行用的是 "\n"或"\r\n",(linux下輸入為'\r\n',windows下為'\n') 正常的HTML中的換行是<br />或<br>;
      情況一、若將textarea的內容直接存入資料庫中,換行在資料庫中也會以"\n"或"\r\n"儲存
             這種情況的解決方案:
            方法一、(運用smarty模版)
                  1. 在php服務端
                          $str = str_replace("\r\n","<br />",$value);(或$str = str_replace("\r\n","<br>",$value);)
                          $this->data['value']=$str;
                  2.在模版端
                          {$value|replace:"&lt;":"<"|replace:"&gt;":">"}
           方法二、(運用smarty模版,這種方式在有些架構下不正確,因為這些架構會在服務端將<br>傳過去之後,經過瀏覽器解析會將'<'和'>'解析為'&lt;'和'&gt;')
                  1. 在php服務端
                         $str = str_replace("\r\n","<br />",$value);
                         $str = htmlspecialchars_decode($str);
                         $this->data['value']=$str;
                  2. 在模版端
                         {$value}
       方法三、(沒有用smarty等模版)
                 1. 在php服務端
                        $str = str_replace("\r\n","<br />",$value);(或$str = str_replace("\r\n","<br>",$value);)
                        $this->data['value']=$str;
                 2. 在html端

                       <?php echo html_entity_decode($value,ENT_QUOTES);?>  // 將特殊的 HTML 實體(包括&lt; 以及&gt;等)轉換回一般字元('<'或'>'等) 


   情況二、 將textarea的內容入庫前做處理,然後從庫中取值時再做一次處理.


總結:情況一和情況二隻是不同的兩種步驟,思路相同


以下這些是轉載別人的,可以做為參考、

解決方案如下:
一.表單處理
提交時使用javascript把 textarea 中的 \n 替換成<br>,這裡使用了jquery.
<Textarea name="test" rows="3" cols="20" id="test"></textarea>
<script type="text/javascript">
$("#form").submit(function(){
var descrip = $("#test").val();
descrip=descrip.replace(/\n/g,'<br />');
$("#test").val(descrip);
}
</script>
二. 服務端處理
使用的是PHP的內建函數,做了一下入庫前的處理
htmlentities(trim($postValue), ENT_QUOTES, "utf-8");
三.讀取顯示頁面
使用PHP的正則函數把讀取的<br>還原,然後輸出
<?php
$show = eregi_replace('&lt;br&gt;|&lt;br /&gt;','<br>',$dataStr);
?>


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.