Php Smarty中的格式化模板

Php Smarty中的格式化模板,php,html,smarty,Php,Html,Smarty,在Smarty中处理后的模板将丢失格式 之前(n++中的源代码): 之后(浏览器中的源): 我也不知道如何修复它。救命啊 格式对HTML解析器来说并不重要。无论是否包含空白,浏览器都将显示相同的输出 但这真的很重要,那么你有几个选择 第一个是为PHP安装Tidy扩展(http://php.net/manual/en/book.tidy.php). 然后,您可以将Smarty的输出捕获为字符串,并将其通过tidy函数传递,以获得格式化的HTML字符串 第二种方法是使用外部命令行实用程序,

在Smarty中处理后的模板将丢失格式

之前(n++中的源代码):


之后(浏览器中的源):



我也不知道如何修复它。救命啊

格式对HTML解析器来说并不重要。无论是否包含空白,浏览器都将显示相同的输出

但这真的很重要,那么你有几个选择

第一个是为PHP安装Tidy扩展(http://php.net/manual/en/book.tidy.php). 然后,您可以将Smarty的输出捕获为字符串,并将其通过tidy函数传递,以获得格式化的HTML字符串

第二种方法是使用外部命令行实用程序,如htmlidy。您可以将输出捕获为字符串,并使用exec()将其传递给命令行实用程序

但老实说,我认为所做的努力并不值得,正如我所说的,HTML解析器不关心空白

正如@GordonM所解释的,“源格式”在处理浏览器时是不必要的。它可能会帮助人类,但仅此而已

a) 使用(Firefox | Chrome | Safari)的开发人员控制台,将为您提供一个交互式、结构良好的DOM视图。忽略任何可能存在或可能不存在的空白。这些是我们想要使用的工具

b) Smarty附带了一个名为trimwhitespace的输出过滤器。如果应用该过滤器,所有不必要的空白和注释都将被删除。这样做是为了减少必须传输到浏览器的文本的大小。您希望发送尽可能少的数据以获得更好的性能。我们称之为“缩小”。您可能在Javascript和CSS领域听说过它


c) 在我通过Smarty 3.1运行示例代码后,您的示例代码显示为换行符和空格。请检查Smarty是否设置为从HTML输出中删除所有空格(假设您使用的是Smarty 3,请检查您是否使用了执行此操作的输出筛选器,信息)并检查您的模板内容是否包装在
{strip}
标记中(信息


如果您没有使用这些过滤器/标签中的一个,恐怕问题不在于Smarty,而在于其他地方的缩小过程……

您肯定在使用HTML5吗?因为
!DOCTYPE
您在这里提供的是HTML5的DTD,如果您正在使用任何其他版本的HTML,请尝试输入适当的HTMLDTD,因为错误的DTD会以不寻常的方式呈现您的模板。请详细说明您的问题。如果它需要答案,它需要细节。你不明白。在Smarty中处理模板后,完全丢失了代码格式(填充、制表符等)。对不起,我的英语:>
<!DOCTYPE html>
<html lang='ru'>
    <head>
<!DOCTYPE html><html lang='ru'><head>