首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用嵌套的html标记清除字符串,但保留<em>标记?

如何使用嵌套的html标记清除字符串,但保留<em>标记?
EN

Stack Overflow用户
提问于 2014-11-25 11:49:34
回答 3查看 681关注 0票数 0

我试图对Solr搜索结果进行清理,因为其中包含html标记:

ActionController::Base.helpers.sanitize( result_string )

很容易清除突出显示的字符串,比如:I know <ul><li>ruby</li> <li>rails</li></ul>

但是当结果突出显示时,我的内部有额外的重要标记- <em></em>

I <em>know</em> <<em>ul</em>><<em>li</em>><em>ruby</em></<em>li</em>> <<em>li</em>><em>rails</em></<em>li</em>></<em>ul</em>>

因此,当我使用嵌套的html和高亮标记对字符串进行清理时,我会得到带有htmls标记的和平号的字符串。这是不好的:)

如何清除带有<em>标记的突出显示的字符串以获得正确的结果(仅使用<em>标记的字符串)?

我找到了路,但它很慢而且不漂亮:

代码语言:javascript
运行
复制
string = 'I <em>know</em> <<em>ul</em>><<em>li</em>><em>ruby</em></<em>li</em>> <<em>li</em>><em>rails</em></<em>li</em>></<em>ul</em>>'

['p', 'ul', 'li', 'ol', 'span', 'b', 'br'].each do |tag| 
  string.gsub!( "<<em>#{tag}</em>>",  '' )
  string.gsub!( "</<em>#{tag}</em>>", '' )
end

string = ActionController::Base.helpers.sanitize string, tags: %w(em)

我如何优化它或使用更好的解决方案来完成它?编写一些正则表达式并删除html_tags,但保留<em></em>

帮帮忙,谢谢。

EN

Stack Overflow用户

发布于 2014-11-25 12:06:40

使用消毒的附加参数,您可以指定允许哪些标记。

在您的示例中,请尝试:

代码语言:javascript
运行
复制
ActionController::Base.helpers.sanitize( result_string, tags: %w(em) ) 

它应该能起作用

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27125948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档