回答
西纳特拉可以让你创建你自己的中间件,一个可能的解决方案(为我的作品)是创建一个自定义类(中间件Sinatra的条款),并使用它。自定义类使用正则表达式来删除所有空白,并尊重内容:
class ObfuscateHTML
def initialize(app, options = {})
@app = app
end
def call(env)
status, headers, response = @app.call(env)
if headers["Content-Type"] =~ /\bhtml\b/
response[0] = response[0].gsub(/\s*(<[^>]+>)\s*/, '\1')
headers["Content-Length"] = response[0].size.to_s
end
[status, headers, response]
end
end
use ObfuscateHTML
使用Rack::Deflater中间件进行gzip压缩(普通的HTTP东西)。
也许“压缩”不是一个好词,我的意思是删除空白,我已编辑的问题 – 2012-01-11 23:47:50
我已经切换“压缩”为“混淆”,以更好地解释问题 – 2012-01-12 00:05:15
你真的不能混淆HTML。 GZIP压缩将比剥离空白更进一步。如果打算让标记更难阅读,那么你在开玩笑吧。我需要做的就是整理标记(或者使用DOM检查器)。 – d11wtq 2012-01-12 00:45:53
使用下面的正则表达式从HTML剥离的空格。这不是可取的方法(由于HTML的本质不适合正则表达式)。但是,它运作良好。
(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}
我必须在哪里必须将该正则表达式放在我的Sinatra中应用程序吗? – 2012-01-11 23:56:41
我不是Ruby和Sinatra应用程序用户。但是,如果您可以在输出HTML输出之前使用任何正则表达式,只需使用上述模式并删除任何匹配的子字符串即可。它适用于我们用C#编写的CMS产品。但是,以上模式当然不是C#特定的。 – 2012-01-12 00:07:16
好的工作!第一个'(?<= [^])'可能会在ruby中引发错误。我正在使用'(?<= [\ ^])'。 – Jokester 2013-12-17 20:07:52
- 1. 如何去除Java字符串中的空白/单字符圆括号
- 2. 从Mako模板输出中去除空白(Pylons)
- 3. 如何使用正则表达式去除双空白字符?
- 4. 如何使用Mako模板去除空白和换行符?我的12362行HTML文件正在查杀IE
- 5. 从ExpressionEngine模板中删除空白
- 6. 如何在模型中去除模型中的字符串的HTML标记
- 7. 如何评论erb模板?
- 8. 如何去除数字字符之间的空格字符?
- 9. 滤波器NSScanner一个String和去除空白数字字符
- 10. 除去空间中的字符串
- 11. 除去空间中的特定字符
- 12. 去除XML标签空白
- 13. JavaScript的 - 如何删除某些空白字符字符串
- 14. SQL如何删除所有的ASCII字符(空白字段输入后空白)
- 15. 删除拖尾行的ERB模板
- 16. Django模板空白
- 17. 如何去除TCL中字符串中的空格?
- 18. 如何在ERB模板中输入返回空格?
- 19. 如何删除ios中的字符串前面的空白
- 20. JQuery ERB模板不能插入HTML
- 21. 如何使用Perl去除字符串中的HTML?
- 22. 如何删除csv文件中字符序列后的空白?
- 23. 空白的Asp.net MVC模板
- 24. 如何去除Wintersmith预览输出中的空白
- 25. 如何去除CMake变量中的尾部空白?
- 26. 如何去除网格图中的空白?
- 27. 如何从字符串中去除非字母数字字符(包括空格)?
- 28. Django模板如何去除重复值?
- 29. HTML电子邮件模板在html标记中有额外的空白空间
- 30. 测试ERB模板
剥离空白和混淆不是同一件事。而“dinamically”不是一个字。你的意思是“动态”吗? – 2012-01-12 00:51:20
好吧,我简化了问题 – 2012-01-12 00:57:49
好多了! @大卫。虽然SO上的标题应该作为一个问题来表述,所以“如何在ERB模板中去除HTML空格?”会很好。 – 2012-01-12 01:09:34