首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >智能HTML编码

智能HTML编码
EN

Stack Overflow用户
提问于 2009-08-04 13:24:33
回答 5查看 913关注 0票数 3

我正在寻找做某种“智能”HTML编码的最佳方法。例如:

代码语言:javascript
复制
From: <a>Next >></a> to: <a>Next gt;gt;</a>
From: <p><a><b><< Prev</b></a><br/><a>Next >></a></p> to: <p><a><b>&lt;&lt; Prev</b></a><br/><a>Next gt;gt;</a></p>

因此,只有文本的非XML / HTML部分才会被编码,就好像调用了HtmlEncode一样。

有什么建议吗?

编辑:这应该是尽可能轻量级的。传入的文本将来自没有HTML编码知识的用户。

EN

回答 5

Stack Overflow用户

发布于 2009-08-04 13:29:32

是:永远不要在源代码中写入HTML。相反,使用像DOM这样的API可以为您解决所有编码问题。

票数 6
EN

Stack Overflow用户

发布于 2009-08-04 13:31:51

如果你想要一个可靠的、完全可靠的C#解决方案(但是很重),那么我会使用HTML Agility Pack library。然后,您可以遍历节点并对内容进行HTML编码。它比正则表达式更安全一些,但显然更强烈。

如果你想在客户端做到这一点,那就使用JQuery。参见Encode HTML entities with jQuery

票数 2
EN

Stack Overflow用户

发布于 2009-08-04 13:53:05

您可能正在尝试解决错误的问题。(我知道这不是你想听到的。)

如果允许用户将未编码的>><<写入HTML,那么他们大概也能够编写<><b>,在这种情况下,您无法可靠地区分文本和标记。(不要担心这会使您容易受到XSS攻击。)

在将文本插入到HTML之前,您确实需要截取文本并对其进行编码。也许你应该解释一下导致你问题的工作流程。一定有更好的方法来解决这个问题。

Edit in response to comment:根本没有办法对同时可以是文本或HTML的输入进行可靠的编码。无论如何,如果用户有足够的技术能力来输入原始HTML,那么他们大概能够编写实体-否则就不应该首先输入原始HTML。如果HTML输入仅供高级用户使用,那么您可以使用一个复选框来指示输入是文本还是HTML。但是您可能应该考虑使用富文本编辑器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1227529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档