在我的 Ruby 应用程序中,我使用以下方法和正则表达式从字符串中删除所有 HTML 标记:
str.gsub(/<\/?[^>]*>/,"")
这个正则表达式几乎完成了我所期望的一切,只是它导致所有引号都被转换为 “
并将所有单引号更改为 ”
.
要将困惑的代码转换回其正确的字符,我缺少什么明显的东西?
编辑:使用或不使用正则表达式都会出现问题,所以很明显我的问题与它无关。我现在的问题是如何处理这个格式错误并更正它。谢谢!
最佳答案
在执行正则表达式替换后使用 CGI::unescapeHTML:
CGI::unescapeHTML(str.gsub(/<\/?[^>]*>/,""))
参见 http://www.ruby-doc.org/core/classes/CGI.html#M000547
在上面的代码片段中,gsub 删除了所有 HTML 标签。然后,unescapeHTML() 将所有 HTML 实体(例如 <、“)还原为其实际字符(<、引号等)
关于此页面上的另一篇文章,请注意您将永远不会收到诸如
之类的 HTML<tag attribute="<value>">2 + 3 < 6</tag>
(无效的 HTML);相反,您可能会收到:
<tag attribute="<value>">2 + 3 < 6</tag>
对 gsub 的调用会将上面的内容转换为:
2 + 3 < 6
unescapeHTML 将完成这项工作:
2 + 3 < 6
关于ruby - 删除 HTML 标签的正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/544031/