【发布时间】:2013-05-01 07:16:37
【问题描述】:
我正在尝试从<p> 标签之间的 HTML 片段中删除空格
<p>Foo Bar</p> <p>bar bar bar</p> <p>bla</p>
如您所见,<p> </p> 标记之间总是有一个空格。
问题是在将字符串保存到我的数据库时,空格会创建<br> 标签。
strip 或 gsub 之类的方法只删除节点中的空格,导致:
<p>FooBar</p> <p>barbarbar</p> <p>bla</p>
而我想要:
<p>Foo Bar</p><p>bar bar bar</p><p>bla</p>
我正在使用:
- Nokogiri 1.5.6
- Ruby 1.9.3
- 导轨
更新:
偶尔会有<p>Tags的子节点产生同样的问题:之间的空白
示例代码
注意:代码通常在一行中,我重新格式化它,否则将无法忍受......
<p>
<p>
<strong>Selling an Appartment</strong>
</p>
<ul>
<li>
<p>beautiful apartment!</p>
</li>
<li>
<p>near the train station</p>
</li>
.
.
.
</ul>
<ul>
<li>
<p>10 minutes away from a shopping mall </p>
</li>
<li>
<p>nice view</p>
</li>
</ul>
.
.
.
</p>
我将如何去除这些空白?
解决方案
原来我在使用gsub 方法时搞砸了,并没有进一步调查将gsub 与regex 一起使用的可能性...
简单的解决方案是添加
data = data.gsub(/>\s+</, "><")
它删除了所有不同类型节点之间的空白... Regex ftw!
【问题讨论】:
-
除了
<p>之外,您的 HTML 是否包含带有嵌入空格的标签,是否也需要去除这些标签? -
首先,感谢您重新格式化我的问题,现在更好了 :) 是的,偶尔会有子标签,例如:
<ul>和<li>理想情况下应该被剥离...... -
您能添加一些
<ul>和<li>标签的示例吗?此外,展示您正在使用的数据的全面样本也很重要。当我们只看到一个小子集时,很容易想出只处理该场景而不是整个画面的代码。 -
更新了它,这似乎是合理的......
-
您是在创建源 HTML 还是它超出了您的控制范围而您正试图清理别人的烂摊子?如果你能控制它,修复 HTML 生成是正确的答案,而且容易得多。
标签: ruby-on-rails ruby ruby-on-rails-3 nokogiri