用textarea接受换行符以及多换行符的处理

来源:互联网 发布:更新ios10app网络错误 编辑:程序博客网 时间:2024/06/08 11:17

首先说明下问题的缘由:

就是我们一般做留言板的时候是用textarea做接收的,那么textarea默认是不接收换行符号的,所以就产生了这个问题。那要让textarea接收换行可以直接用nl2br()这个函数类解决。但是这样就又产生了一个问题,那就是我如果我输入如下的形式:


那我们接收之后出现的问题就是其实用户只输入了几个没用的字符,但是里面又包含很多的换行,那在浏览器解析完这个内容之后如果换行符号很多,那就会出现有一条内容很长可能占据你整个网页的高度,使得别人看的时候会出现很长的滚动条,那这种体验是不好的,所以我们需要即可以让textarea接收换行但是又不会出现上述的问题,那怎么办呢?就用如下代码解决吧:

$str = preg_replace('/(<br \/>)/', '\n', nl2br($_POST['content']));$str = preg_replace('/(\\\n\s[^.]){1,}/', '<br />', $str);

而且上面这两行代码是必须的,否则你就会出现我说的那个问题。


另外就是对于编辑器中也同样有这个问题,比如一个CSDN的论坛,别人回复帖子的时候就可以在开始位置写几个字符,然后结尾也是几个字符,然后在中间按住回车键不动,你可以按几分钟之后再松开,然后你点击回复,那你看看你回复之后这个页面变成了什么样,那编辑器的这种可接收换行但又不想出现我说的那种问题的方法的解决办法是很简单的,因为不同的编辑器对于换行的表示是不同的,像我用ueditor测试的时候它的换行表示是:“<p><br /><\/p>”

那你要处理这种很多的换行的话,仅仅需要一个正则替换就可以了,因为从编辑器获取来的数据都是一个长字符串在代码处理上看是输入一行,所以不需要事先加换行符,这就是为什么上面的代码中必须做第一次替换的原因。

原创粉丝点击