您的位置:首页 > 编程语言 > PHP开发

php中textarea文本框输入内容回车换行('\n')的处理方法

2017-07-14 10:20 1126 查看
因为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:"<":"<"|replace:">":">"}
           方法二、(运用smarty模版,这种方式在有些框架下不正确,因为这些框架会在服务端将<br>传过去之后,经过浏览器解析会将'<'和'>'解析为'<'和'>')
                  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 实体(包括< 以及>等)转换回普通字符('<'或'>'等) 

   情况二、 将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('<br>|<br />','<br>',$dataStr); 

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: