方法一、
def plain_text(text,replacement=" ")
text.gsub(/<[^>]*>/){|html| replacement}
end
str ="<p><strong><em><span style=\"text-decoration: underline;\"><span style=\"font-size: large; color: #ff0000;\">
我们没有惊天的抱负,我们没有动地的梦想,我们只想创造属于我们自己的辉煌<br />Mooko团队的成立是偶然也是必然</span></span></em></strong></p>"
puts str
puts plain_text(str,replacement=" ")
输出结果:
<p><strong><em><span style="text-decoration: underline;"><span style="font-size:
large; color: #ff0000;">
我们没有惊天的抱负,我们没有动地的梦想,我们只想创造属于我们自己的辉煌<br />Mooko团队的成立是偶然也是必然</span></span></em></strong></p>
我们没有惊天的抱负,我们没有动地的梦想,我们只想创造属于我们自己的辉煌Mooko团队的成立是偶然也是必然
方法2、
使用Ryan Grove开发的Sanitize是一个新的Ruby HTML代码净化类库:
Ryan在他的博客帖子中提到:Sanitize默认移除所有的HTML标记,但是你可以通过设置参数,允许保留某些特定的标记、属性、协议等等。你可以从他的帖子中找到更详细的介绍。Sanitize甚至能自动闭合那些尚未闭合的标签——一个超级COOL的特性!
先安装: gem install sanitize
require 'sanitize'
html = '<b><a href="http://foo.com/">foo无敌</a></b><img src="http://foo.com/bar.jpg" />'
Sanitize.clean(html) # => 'foo无敌'
Sanitize.clean(html, Sanitize::Config::RESTRICTED)
# => '<b>foo无敌</b>'
Sanitize.clean(html, Sanitize::Config::BASIC)
# => '<b><a href="http://foo.com/" rel="nofollow">foo无敌</a></b>'
Sanitize.clean(html, Sanitize::Config::RELAXED)
# => '<b><a href="http://foo.com/">foo无敌</a></b><img src="http://foo.com/bar.jpg" />'
强大吧!
参考资料:
http://wonko.com/post/sanitize
http://www.ruby-yee.com/2009/01/15/how-to-sanitize-html-and-css-in-ruby