我正在开发一个博客,一些非常讨厌的东西正在发生换行符(\ n)。一切正常,除非我发布一个包含预标签的帖子,我的换行符会搞砸缩进。
所以,如果我的代码看起来像这样
<pre>
<code>
some code some code
more code more code
</code>
</pre>
由于某种原因,使用帖子保存在db字段中的换行符会导致pre标签内的任何内容被一两个选项卡缩进。
我不知道为什么要这样做,但如果我做了像
这样的事情string.gsub!(/\n/, "<br />")
缩进被移除,所以我知道它与\ n有关。但后来我的问题是,有太多的换行符,然后格式是关闭的。
然后我尝试使用类似于
的方法捕获pre标签内的所有内容def remove_newlines(string)
regexp = /<pre>\s?(.*?)\s?<\/pre>/
code = regexp.match(string)
code[1].gsub!(/\n/, "<br />")
end
但我无法让它正常工作。
任何人都知道如何摆脱这个奇怪的缩进问题,或者对此有任何指示?
谢谢!
答案 0 :(得分:5)
听起来您的模板引擎会自动缩进<pre>
标记的内容。浏览器按原样呈现<pre>
标记内的空白(根据规范,它们应该如此)。这意味着由模板引擎添加的<pre>
内每行开头的空白以便使HTML源更具可读性,这也是在实际页面中呈现的,与HTML源中的大多数其他位置不同。
因此,解决方案取决于您的模板语言。
如果您使用的是HAML:
HAML FAQ: How do I stop Haml from indenting the contents of my pre and textarea tags?
希望这有帮助。