Php 如何缩进/美化动态生成的HTML?

Php 如何缩进/美化动态生成的HTML?,php,html,Php,Html,我将HTML与PHP结合起来生成了一个网页。我的PHP代码是: public function generateSelect() { $data = "<select>\n"; for ($i = 2000;$i<=2012;$i++) { $data .= "\t<option value='$i'>$i</option>\n"; } $data .= "</select>";

我将HTML与PHP结合起来生成了一个网页。我的PHP代码是:

public function generateSelect()
{
    $data = "<select>\n";

    for ($i = 2000;$i<=2012;$i++)
    {
        $data .= "\t<option value='$i'>$i</option>\n";
    }
    $data .= "</select>";
    $this->data = $data;
    return $this;
}
公共函数generateSelect()
{
$data=“\n”;
对于($i=2000;$idata=$data;
退还$this;
}
这是我的HTML:

<div>
    <?= $data ?>
</div>

这就是结果:

<div>
    <select>
    <option value='2000'>2000</option>
    <option value='2001'>2001</option>
    <option value='2002'>2002</option>
    <option value='2003'>2003</option>
    <option value='2004'>2004</option>
    <option value='2005'>2005</option>
    <option value='2006'>2006</option>
    <option value='2007'>2007</option>
    <option value='2008'>2008</option>
    <option value='2009'>2009</option>
    <option value='2010'>2010</option>
    <option value='2011'>2011</option>
    <option value='2012'>2012</option>
</select>
</div>

2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012

我知道它可以用
\t
\n
修复。但是我想知道是否有任何方法可以自动完成它?

可以用PHP的类以及PHP的扩展来完成

<?php

    $html = <<<HTML
<div>
    <select>
        <option value='2000'>2000</option>
        <option value='2001'>2001</option>
        <option value='2002'>2002</option>
        <option value='2003'>2003</option>
        <option value='2004'>2004</option>
        <option value='2005'>2005</option>
        <option value='2006'>2006</option>
        <option value='2007'>2007</option>
        <option value='2008'>2008</option>
        <option value='2009'>2009</option>
        <option value='2010'>2010</option>
        <option value='2011'>2011</option>
        <option value='2012'>2012</option>
    </select>
</div>
HTML;

    $dom = new DOMDocument();
    $dom->loadXML($html);

    $dom->formatOutput = true;
    echo $dom->saveHTML();

正如ceejayoz所说,这是没有必要的,但是如果您想在没有\t和\n的情况下完成它:

for ($i = 2000;$i<=2012;$i++)
{
    $data .= "
    <option value='$i'>$i</option>";
} 

for($i=2000;$i不要为生产环境中的标记缩进而烦恼。不要使用HTML美化器过滤器来隐藏代码的潜在问题

如果需要在开发环境中缩进代码,请注意前面提到的库(Tidy和DOM)将尝试修复标记(这是它们的主要用途;缩进是一种副产品)

不会尝试清理或以其他方式操作缩进以外的输出。此库旨在简化调试。请勿在生产中使用

$parser = new \Gajus\Dindent\Parser();
$output = $parser->indent('<p>Your HTML</p>');
$parser=new\Gajus\Dindent\parser();
$output=$parser->indent(“您的HTML

”);
DOMDocument
适用于片段。只要它们有效,它就应该格式化代码。因此,我只是取消了您的
选项之一
标记,并且
DOMDocument
没有重新缩进。请参见。抱歉,我的错误。不幸的是,除非您的注释被编辑,否则无法撤销。因此,可能需要添加一行,我撤销,然后您撤销您的注释ges。我也是。很抱歉弄得一团糟。@WebnetMobile.com别担心!