在我的Ruby应用程序中,我使用以下方法和正则表达式从字符串中删除所有HTML标记:
str.gsub(/<\/?[^>]*>/,"")
这个正则表达式完成了我所期待的所有内容,除了它导致所有引号转换为“
并将所有单引号更改为”
将杂乱的代码转换回正确的字符时,我错过了哪些显而易见的事情?
编辑:无论有没有正则表达式都会出现问题,所以很明显我的问题与它无关。我现在的问题是如何处理这种格式错误并纠正它。谢谢!
答案 0 :(得分:5)
执行正则表达式替换后使用CGI :: unescapeHTML:
CGI::unescapeHTML(str.gsub(/<\/?[^>]*>/,""))
请参阅http://www.ruby-doc.org/core/classes/CGI.html#M000547
在上面的代码段中,gsub会删除所有HTML标记。然后,unescapeHTML()将所有HTML实体(例如&lt;,&amp;#8220)恢复为它们的实际字符(&lt;,quotes等)
关于此页面上的其他帖子,请注意您永远不会传递HTML,例如
<tag attribute="<value>">2 + 3 < 6</tag>
(这是无效的HTML);你会收到的是:
<tag attribute="<value>">2 + 3 < 6</tag>
对gsub的调用会将上述内容转换为:
2 + 3 < 6
unescapeHTML将完成这项工作:
2 + 3 < 6
答案 1 :(得分:2)
当你看到类似的东西时,你会遇到更多麻烦:
<doohickey name="<foobar>">
您需要应用以下内容:
gsub(/<[^<>]*>/, "")
...只要模式匹配。
答案 2 :(得分:2)
这个正则表达式几乎就是这样 我只是期待它,除了它 引起所有引号 变成了“和所有 单引号要更改为“
这听起来好像RegExp会这样做。你确定它之前有所不同吗?
在这里查看这个问题以获得有关问题的信息,它有一个很好的答案:
Get non UTF-8 form fields as UTF-8 in php.
答案 3 :(得分:0)
我遇到类似的字符更改问题,这发生在我的代码运行另一个强制执行UTF-8编码的模块时,然后当它返回时,我有一个不同的文件(slurped数组行)手中。
答案 4 :(得分:-3)
您可以使用多次通过系统来获取您要查找的结果。
运行正则表达式后,运行表达式将&amp; 8220; 转换为引号,将另一个表达式转换为&amp; 8221; 转换为单引号。