提问人:Soroush Khosravi 提问时间:7/27/2012 最后编辑:Bhargav RaoSoroush Khosravi 更新时间:10/31/2023 访问量:2039
如何缩进/美化动态生成的HTML?
How to indent/beautify dynamically generated 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>";
$this->data = $data;
return $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>
我知道它可以用 和 来修复。但是我想知道是否有任何方法可以自动完成?\t
\n
答:
7赞
Madara's Ghost
7/27/2012
#1
它可以通过 PHP 的 tidy
类来完成。以及PHP的DOM
扩展。
<?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();
评论
1赞
Jason McCreary
7/27/2012
DOMDocument
处理片段。只要它们有效,它就应该格式化代码。
1赞
Matt
7/27/2012
#2
就像 ceejayoz 说的,没有必要,但如果你想在没有 \t 和 \n 的情况下做到这一点:
for ($i = 2000;$i<=2012;$i++)
{
$data .= "
<option value='$i'>$i</option>";
}
评论
0赞
Marcin Orlowski
8/24/2012
对不起,我的错。不幸的是,除非您的评论被编辑,否则无法撤销,所以也许添加一行,我撤销,然后您撤销您的更改。
0赞
Marcin Orlowski
8/24/2012
我也是,对不起,弄得一团糟。
0赞
Matt
8/24/2012
@WebnetMobile.com 不用担心!
0赞
mickmackusa
10/31/2023
当选项的属性值与选项的文本值相同时,可以安全地删除声明。所有表单提交和 javascript 仍将以相同的方式工作,没有错误。value
value
-1赞
Gajus
4/19/2014
#3
不要为生产环境中的标记缩进而烦恼。不要使用 HTML 美化器过滤器来隐藏代码的潜在问题。
如果您需要在开发环境中缩进代码,请注意前面提到的库(Tidy 和 DOM)会尝试修复您的标记(这是它们的主要目的;缩进是副产品)。
我的 Dindent HTML 美化器不会尝试清理或以其他方式操纵您的输出,但仅限于缩进。此库旨在简化调试。请勿在生产中使用它。
$parser = new \Gajus\Dindent\Parser();
$output = $parser->indent('<p>Your HTML</p>');
评论