textarea中的HTML解码

时间:2012-03-26 21:10:52

标签: jquery html5

我在使用我构建的网站管理工具时遇到问题,它允许我为我的网站编辑文章。我正在使用google-code-prettify,因为我的文章是关于C ++编程的,然后我使用<pre class="prettyprint"> </pre>标签来指定我即将开始编写C ++代码。问题在于,当我写信时,

#include <iostream>

然后将其插入我的mySQL数据库,它将正确添加插入文本&lt;&gt; 但是当我请求信息并将其显示在文章查看页面中时。它将打破页面,因为HTML认为我正在尝试添加HTML标记。因此,当使用&lt; &gt;标签时,它会正确地将这些添加到我的数据库中,文章查看器页面将正确读取

#include <iostream>

但如果我想要修改文章,它会将&lt;&gt;视为&lt;&gt ;.哪个在另一个插页上会让我回到插入&lt;&gt;的原始问题进入数据库并让它们不在我的查看器中。如何阻止HTML将&lt;&gt;更改为&lt;&gt;,但前提是它位于我的textarea中的<pre class"prettyprint"></pre>内。我已经让它工作了,它将使用jquery转换文本区域中的所有内容。

$("#contbox").each(
  function () {
    $(this).text($(this).html()).html();
 }
);

其中#contbox是我的textarea的id,但我无法弄清楚如何将其限制在pre标签内,

提前致谢

1 个答案:

答案 0 :(得分:1)

最佳做法是将文件存储为未编码的字符串,并仅在需要显示时进行编码。最大的原因是可能在需要不同编码的多个地方显示/使用相同的数据(或根本不显示)。如果您的网站允许用户输入HTML格式的文本,您应该将其完全按照输入的方式存储在数据库中,并在需要时将其显示给最终用户调用适当的编码。

您需要在服务器端调用适当的编码。这样可以防止在您的javascript运行和编码数据之前执行恶意代码,这也意味着如果用户禁用了javascript,您的用户仍会看到有效的文本。