Home  >  Article  >  Backend Development  >  如何在textarea输入的内容,每段都被<p></p>包裹起来?

如何在textarea输入的内容,每段都被<p></p>包裹起来?

WBOY
WBOYOriginal
2016-06-17 08:31:581272browse

例如输入的时候:
我是一个粉刷匠
大家好
啦啦啦


输入完后提交后转成:

我是一个粉刷匠


大家好


啦啦啦




存入数据库

回复内容:

你这个都没有富文本的需求,建议你不要在数据库存 HTML。因为到输出的时候,你无法直接转义来保证安全(内容已经是 HTML 了)。这个时候想过滤 XSS 就得费比较大的功夫了。 如果你说的是富文本编辑器还是挺麻烦的,但是你说的是textarea就很简单了。
<code class="language-js"><span class="kd">var</span> <span class="nx">val</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="s1">'textarea'</span><span class="p">)[</span><span class="mi">0</span><span class="p">].</span><span class="nx">value</span><span class="p">;</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">val</span><span class="p">.</span><span class="nx">replace</span><span class="p">(</span><span class="s2">"\n"</span><span class="p">,</span><span class="s2">"<p>"</p></span><span class="p">);</span>
<span class="nx">val</span> <span class="o">=</span> <span class="s2">"<p>"</p></span> <span class="o">+</span> <span class="nx">val</span> <span class="o">+</span> <span class="s2">""</span><span class="p">;</span>
</code>
听上去挺简单,事实上要跨浏览器的话挺麻烦的。主要是换行可能是br, p, div
如果你用第三方的编辑器,例如tinymce / ckeditor的话,这些编辑器专门有类似的功能。

如果是自己写的,只能够简单的找br or div or p,然后自己生成树,自己去替代,挺麻烦的。。。。 直接存 textare 的内容。

显示的时候设置 CSS:

white-space: pre-wrap; 并不需要转html
直接white-space:pre-wrap 循环读取每一行,写入\n,文件函数库 summernote。。
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn