我想知道,到目前为止,无法在网上找到任何答案,如何完成以下任务。
假设我有一个包含以下内容的字符串:
my_string = "你好,我是一个string。" (在预览窗口中,我看到这实际上是粗体和斜体格式,而不是显示“strong”和“i”标签)
现在,我想使用 html_escape()(或 h())方法/函数来确保安全。 所以我想阻止用户插入任何 javascript 和/或样式表,但是,我仍然希望以粗体显示单词“Hello”,以斜体显示单词“string”。
据我所知,除了文本本身之外,h() 方法不接受任何其他参数。
有没有办法只转义某些 html 标签,而不是全部?喜欢白色或黑色列表标签?
这可能看起来像的例子,我想说的是:
h(my_string, :except => [:strong, :i]) # => 所以基本上,转义所有内容,但单独留下“strong”和“i”标签,不要转义这些。
有什么方法可以实现吗?
提前致谢!
最佳答案
排除特定标签实际上是一个非常困难的问题。特别是 script
标签可以插入到 very many different ways 中- 检测它们是非常棘手的。
如果可能的话,不要自己实现。
关于html - Rails - 使用 h() 转义 HTML 并排除特定标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1494648/