【发布时间】:2013-01-09 12:31:38
【问题描述】:
我正在尝试编写一个函数,根据一组特殊的 HTML 实体(例如用户输入“&”而不是“&”)检查参数,然后在这些输入的实体周围添加一个跨度。
如何搜索字符串参数来找到它?会是正则表达式吗?
这是我目前的代码:
function ampersandKiller(input) {
var specialCharacters = ['&', ' ']
if($(specialCharacters).contains('&')) {
alert('hey')
} else {
alert('nay')
}
}
显然这不起作用。有人有什么想法吗?
因此,如果传递了像My name is &amp; 这样的字符串,它将呈现My name is <span>&amp;</span>。如果一个特殊字符被列出两次——比如“我真的很喜欢&amp;&amp;&amp;”,它只会渲染每个元素周围的跨度。用户还必须能够使用普通的&。
【问题讨论】:
-
能提供简单的测试用例吗?比如哪个字符串应该匹配,哪个不应该匹配。
-
刚刚添加。谢谢你的提示!
-
你实际上想做什么?在我看来,您正在尝试解决一个您甚至不应该首先遇到的问题。你能解释一下这个问题吗?
-
我正在开发一个基于用户输入的应用程序。我试图允许用户传递特殊字符和 HTML 实体——但为了阻止实体呈现,我希望在它从服务器返回之前将其包装在
标记中。也许这不是最好的攻击方法? -
如果你在服务器端进行,每种编程语言都有一个 HTML 编码功能。如果您尝试在客户端执行此操作,则将字符串分配给元素的文本值而不是使用 innerHTML 是正确的。这取决于你做什么。
标签: javascript jquery html-entities