Php格式化输出html


ruby on rails - Php formatting output html

在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缩进的时候是当你希望有人用他们的浏览器查看页面源代码的时候。