`
lzqustc
  • 浏览: 207147 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

去除html标签

    博客分类:
  • ruby
阅读更多

方法一、


 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://www.leesoft.com.cn/2008/07/10/ror%e4%b8%ad%e7%9a%84%e4%b8%ad%e6%96%87%e6%88%aa%e5%8f%96%e5%92%8c%e5%8e%bb%e6%8e%89html%e6%a0%87%e7%ad%be/

 

http://wonko.com/post/sanitize

 

http://www.ruby-yee.com/2009/01/15/how-to-sanitize-html-and-css-in-ruby

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics