将 html 转换为 ROR 中的文本

Dom*_*Dom 0 ruby ruby-on-rails ruby-on-rails-4

HTML

<p>Hello</p>
<p>this is <br></p>
<p>a <br></p>
<p>test message</p><br> 
Run Code Online (Sandbox Code Playgroud)

我已经尝试过'strip tags',它给了我以下输出:“Hellothis is a test message”

我想要的输出:

Hello

this is 

a

test message
Run Code Online (Sandbox Code Playgroud)

Eri*_*nil 6

html = "<p>Hello</p>
<p>this is <br></p>
<p>a <br></p>
<p>test message</p><br>"
Run Code Online (Sandbox Code Playgroud)

带标签

strip_tags 助手似乎工作正常:

puts ActionController::Base.helpers.strip_tags(html)
# => 
# Hello
# this is 
# a 
# test message
Run Code Online (Sandbox Code Playgroud)

能切里

Nokogiri 默认情况下包含在 Rails 中,因此您也可以使用:

doc = Nokogiri::HTML(html)
puts doc.xpath("//text()").to_s
Run Code Online (Sandbox Code Playgroud)

它输出:

Hello
this is 
a 
test message
Run Code Online (Sandbox Code Playgroud)

将换行符转换为空格

如果要删除换行符:

ActionController::Base.helpers.strip_tags(html).gsub(/\s+/,' ')
#=> "Hello this is a test message"
Run Code Online (Sandbox Code Playgroud)

  • 谢谢回复 !我试过你上面的解决方案,不幸的是它没有给我想要的输出,对于这个 html 字符串 "&lt;p&gt;Heelo&lt;/p&gt;&lt;p&gt;this&lt;/p&gt;&lt;p&gt;is &lt;/p&gt;&lt;p&gt;a &lt; /p&gt;&lt;p&gt;test&lt;/p&gt;message&lt;br&gt;”我得到的输出是“Heelothisis a testmessage” (4认同)