ruby - 删除 HTML 标签的正则表达式问题

标签 ruby regex string encoding

在我的 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="&lt;value&gt;">2 + 3 &lt; 6</tag>

对 gsub 的调用会将上面的内容转换为:

2 + 3 &lt; 6

unescapeHTML 将完成这项工作:

2 + 3 < 6

关于ruby - 删除 HTML 标签的正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/544031/

相关文章:

ruby - 为什么在尝试启动 Rails 控制台时会出现 Readline 错误?

ruby-on-rails - 带有 rails-api 和 Angular JS 的 SPA

regex - 通过 Powershell 从文本文件中提取字符串

python 的 .replace 留下空行

ruby-on-rails - Rails 3 的 ssl_requirement 插件的替代品?

ruby - 来自 ruby​​ 脚本的 OmniAuth/OAuth 身份验证

python - 两个字符串之间的正则表达式匹配python

regex - 正则表达式不提取组

java - 使用字符串分隔符解析整数

C++ 以十六进制显示字节数组