1

我实际上使用正则表达式解决了这个问题,但我想知道是否有更容易解决的问题,因为如果我涵盖了所有可能的规则,我对我的正则表达式没有信心。我的问题是我想在文本周围加上双引号(“)并打印它。在数据库中检索时,文本具有 html 标签。

假设我正在研究这个,

@text = `<p>my <strong>legs <em>wants</em>&nbsp;</strong>ex <strong>desire</strong> blood sleep</p>` 

当我在我的视图中尝试<%= raw "\"#{@text.html_safe}\"" %>时,我得到了这个作为我的输出:

"
my legs wants ex desire blood sleep

"

当我做类似<%= "\"#{@text.html_safe}\"" %>的输出是:

"<p>my <strong>legs <em>wants</em>&nbsp;</strong>ex <strong>desire</strong> blood sleep</p>"

有任何想法吗?我只想打印"my legs wants ex desire blood sleep"出来

更新

使用 strip_tags 很酷,我认为它让我更接近答案,但不幸的是 strip_tags 在我的控制器/常规红宝石中不起作用。我还在研究。

4

3 回答 3

1

我想你想strip_tags文档中

<%= "\"#{strip_tags(@text)}\"" %>

编辑:

更丑,但也摆脱了  。

<%= "\"#{strip_tags(@text.gsub("&nbsp;", "")}\"" %>
于 2013-11-05T20:43:50.400 回答
1
require 'nokogiri'
doc = Nokogiri('<p>my <strong>legs <em>wants</em>&nbsp;</strong>ex <strong>desire</strong>     blood sleep</p>'.gsub('&nbsp;', ' '))

# use Nokogiri to get plain text

# output it
= "\"#{doc.text.squeeze}\""
于 2013-11-05T21:25:54.530 回答
0

尝试.strip

<%= "\"#{@text.html_safe.strip}\"" %>
于 2013-11-05T20:35:35.090 回答