【发布时间】:2017-12-21 15:34:05
【问题描述】:
我以下面的字符串为例
"<p>Hello,</p><p><br></p><p>my name is Same</p><p><br></p><p><br></p><p>Farewell,</p><p>Same</p>"
我想从中删除所有 HTML 标记。我正在使用以下哪种方法有效
Nokogiri::HTML(CGI.unescapeHTML(@message_preview)).content
但它最终产生了,
"Hello,my name is SameFarewell,Same"
当我想要的时候
"Hello, my name is Same Farewell, Same"
注意空格,给定一个换行符,我希望它的位置有一个空格,而不是字符串中的下一个字符。
我希望尝试使用 gsub 或 regex,但对如何实现它有点迷茫。
【问题讨论】:
-
我想最简单的解决方案可能是在删除 HTML 标签之前用空格替换所有换行符
<br>!?还可以将多个空格修剪为一个空格(如果有多个换行符)。 -
其实,是的。你说的对。我最终使用了
@message_preview.gsub!(/<br>/, ' '),但我刚刚意识到,由于键盘选项,我需要考虑大量的 html 标签。粗体、斜体、下划线、ol、ul、引号等。所以我需要找到一种方法将所有这些都包含在我的 gsub 中,然后运行 nokogiri -
@xander 你猜错了;使用这种方法,您迟早会发现自己在正则表达式上实现 HTML 解析器。
-
您使用像
nokogiri这样的解析器以正确的方式处理它,将其作为正则表达式是一个坏主意 -
这是为什么呢?正则表达式优于 nokogiri 有什么缺点?
标签: ruby-on-rails ruby regex format gsub