我正在寻找nokogiri中删除html空格的方法。评论和javascript评论(/ * * /,//)。我这样做不是因为文件的大小。我正在玩机架中间件来完成这项工作。我知道我可以通过正则表达来做,但我认为这可能很麻烦。
如果不能与nokogiri一起做,请给我最好的正则表达式去除上述2个案例。
我尝试使用正则表达式:
response = @app.call(env)
body = response.last.body.gsub(/(\n|\t|\r)/, ' ').gsub(/>\s*</, '><').gsub(/<!--[^>]*-->/, ' ').squeeze(' ')
response.last.body = body
response
我认为应该采用更简洁的方式而不是使用正则表达式。
答案 0 :(得分:3)
Loofah很不错,但它不会帮助你删除javascript评论。
This thread涉及剥离js评论,但似乎存在很多分歧。我同意那些说你不应该这样做的人。但是,如果您想尝试使用丝瓜络接受的答案,您可以这样做:
require 'rubygems'
require "loofah"
scrubber = Loofah::Scrubber.new do |node|
node.content = node.content.strip if node.name == "text"
node.remove if node.name == "comment"
if node.cdata? && node.parent.name == "script"
node.content = node.content.gsub(/\/\*![^*]*\*+(?:[^*\/][^*]*\*+)*\//,'')
end
end
puts Loofah.fragment('<p> trim </p><!-- remove --><p> me </p><script>var x=0;/*! remove! */</script>').scrub!(scrubber)
# <p>trim</p><p>me</p><script>var x=0;</script>
答案 1 :(得分:2)
丝瓜络可能就是你想要的:
答案 2 :(得分:0)
我最终写了一个middleware来处理这个,因为没有确切的解决方法。 在这里,我使用非常严格的正则表达式来处理它。
检查我的github repo上的代码。