在ruby on Rails中,您可以选择创建更清晰和格式良好的输出:
<div>
<%= 3.times do -%>
<%= "Hello World" -%>
<%= end -%>
</div>
,输出将是:
<div>
Hello World
Hello World
Hello World
</div>
但是当我在php中做同样的事情时:
<div>
<?php for ($i =0; $ < 3;$i++): ?>
<?php echo "Hello World" ?>
<?php endfor; ?>
</div>
我得到这样的东西:
<div> Hello World
Hello World
Hello World
</div>
在PHP中有类似ruby的"-%>"的东西可以帮助我实现同样的事情吗?
请记住PHP是一个预处理器,所以基本上它只是将一些东西附加到文件中。这意味着要在你的文件中获得正确的"风格"或"整洁",你需要在(随机)生成的东西中添加换行符等。
以为例,对于每个循环,将'n添加到字符串的末尾,这样它将在文件的新行上打印它。如果你想要一个选项卡你可以输入't等等
你可以使用PHP捆绑的HTMLTidy。
但是,您应该考虑使用Tidy处理标记可能会减慢站点的速度。如果必须使用Tidy,则应该缓存它的输出,或者只在调试时启用它。
不要认为它是提供的。就像@Antwan states一样,你只需要在你的echo
上添加你自己的换行符和制表符。注意:不确定是否有一个完整的证明函数来处理这个问题,因为您的IDE也会影响您的换行符和空格。
function echonice($str) {
echo "'n't".$str;
}
修复了代码:(看起来很丑吧?)
<div>
<?php for ($i =0; $ < 3;$i++):
echo "'t'tHello World" ?>
endfor; ?>
</div>
<?php ?>
标签之间的空白被保留,也许Ruby做了一些花哨的过滤,PHP在任何情况下都不会。
决定哪一部分要用PHP打印,哪一部分要用原生HTML打印总是很棘手的。在任何情况下,浏览器都不关心空白;)
我偶尔会做以下事情:
<?php
echo "<html>";
echo " <head>";
echo " </head>";
echo " <body>";
echo " <div>";
echo " $variable";
echo " </div>";
echo " </body>";
echo "</html>";
?>
文本中的所有行都缩进,以便HTML更容易阅读。但是,只有当您有很多变量要添加到HTML中时,这样做才真正有意义。正如前面提到的,浏览器不依赖缩进来显示页面。你唯一需要正确的HTML缩进的时候是当你希望有人用他们的浏览器查看页面源代码的时候。