在我的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等
2 + 3 < 6
(这是无效的HTML); 你会收到的是:
2 + 3 < 6
对gsub的调用会将上述内容转换为:
2 + 3 < 6
而unescapeHTML将完成这项工作:
2 + 3 < 6