因为textarea中换行用的是 “\n"或”\r\n",(linux下输入为’\r\n’,windows下为’\n’)
正常的HTML中的换行是或; 情况一、若将textarea的内容直接存入数据库中,换行在数据库中也会以"\n"或"\r\n"存储 这种情况的解决方法: 方法一、(运用smarty模版) 1. 在php服务端 KaTeX parse error: Can't use function '\r' in math mode at position 20: …= str_replace("\?r?\n","<br />",value);(或KaTeX parse error: Can't use function '\r' in math mode at position 20: …= str_replace("\?r?\n","<br>",value)😉 this->data['value']=this?>data[′value′]=str; 2.在模版端 {$value|replace:"<":"<"|replace:">":">"} 方法二、(运用smarty模版,这种方式在有些框架下不正确,因为这些框架会在服务端将 传过去之后,经过浏览器解析会将’<‘和’>‘解析为’<‘和’>’) 1. 在php服务端 KaTeX parse error: Can't use function '\r' in math mode at position 20: …= str_replace("\?r?\n","<br />",value); str = htmlspecialchars_decode(str=htmlspecialcharsd?ecode(str); this->data['value']=this?>data[′value′]=str; 2. 在模版端 {$value} 方法三、(没有用smarty等模版) 1. 在php服务端 KaTeX parse error: Can't use function '\r' in math mode at position 20: …= str_replace("\?r?\n","<br />",value);(或KaTeX parse error: Can't use function '\r' in math mode at position 20: …= str_replace("\?r?\n","<br>",value)😉 this->data['value']=this?>data[′value′]=str; 2. 在html端 <?php echo html_entity_decode($value,ENT_QUOTES);?> // 将特殊的 HTML 实体(包括< 以及>等)转换回普通字符(’<‘或’>'等)
情况二、 将textarea的内容入库前做处理,然后从库中取值时再做一次处理.
总结:情况一和情况二只是不同的两种步骤,思路相同
以下这些是转载别人的,可以做为参考、
解决方法如下: 一.表单处理 提交时使用javascript把 textarea 中的 \n 替换成 ,这里使用了jquery.
二. 服务端处理 使用的是PHP的内置函数,做了一下入库前的处理 htmlentities(trim($postValue), ENT_QUOTES, “utf-8”); 三.读取显示页面 使用PHP的正则函数把读取的 还原,然后输出
<?php $show = eregi_replace('<br>|<br />',' ',$dataStr); ?>
|