Php格式化输出html

Php格式化输出html,php,ruby-on-rails,Php,Ruby On Rails,在ruby on Rails中,您可以选择创建更干净且格式良好的输出: <div> <%= 3.times do -%> <%= "Hello World" -%> <%= end -%> </div> 输出将是: <div> Hello World Hello World Hello World </div> 你好,世界 你好,世界 你好,世界

在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中是否有类似rubys“-%>”的东西可以帮助我实现同样的目标?

请记住,php是一个预处理器,因此基本上它只是将一些东西附加到文件中。这意味着要在文件中获得正确的“样式”或“清洁度”,您需要在(随机)生成的内容中添加换行符等

例如,对于每个循环,将\n添加到字符串的末尾,以便在文件的新行上打印它。如果你想要一个标签,你可以做\t等等,你可以使用它和PHP捆绑在一起


<>但是,你应该考虑用TyDy处理标记可以减慢你的站点。如果必须使用Tidy,则应该缓存它的输出,或者仅为调试目的启用它。

不要认为提供了Tidy。像@antwanstates一样,您只需在
echo
s上添加自己的换行符和选项卡。注意:由于IDE也会影响换行符和间距,所以不确定是否有完整的校对函数来处理这个问题

function echonice($str) {
    echo "\n\t".$str;
}
修正了密码:(看起来很难看哈?)


endfor;?>
标记之间的空白被保留,也许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缩进的时候是希望有人用浏览器查看页面源代码。

这并不重要,因为浏览器会将这两个缩进显示为identical@MarkBaker,你是对的,这并不重要,我想知道在php中是否有类似的标记我不知道,显然没有。
<?php
echo "<html>";
echo "   <head>";
echo "   </head>";
echo "   <body>";
echo "       <div>";
echo "           $variable";
echo "       </div>";
echo "   </body>";
echo "</html>";
?>