我有一些PHP代码,如下所示(简化):
<ul>
<?php
for ($Index = 1; $Index <= 10; $Index++)
{
echo("<li>" . $Index . "</li>\n");
}
?>
</ul>
问题是对于第一个之后的所有行,输出没有缩进。我想保持我的代码整洁,所以我希望所有<li>
元素都能正确对齐。
我尝试使用\t
在每个元素之前输出制表符,但是第一行缩进超过预期。在元素之后输出标签意味着尾随</ul>
的展示位置将被搞砸。
\r
根本不起作用。
是否有任何技巧可以保持输出格式正确,或者我是否需要使用乱码?
答案 0 :(得分:2)
由于此行开头有额外的空格,第一行比您想要的更加缩进:
<?php
由于该空格位于PHP标记之外,因此直接输出。但是因为它不在PHP标记之内,所以它不包含在循环中,只会影响第一行。
你可以这样做以帮助避免它:
<ul>
<?php
for ($Index = 1; $Index <= 10; $Index++) {
echo "\n <li>$Index</li>";
}
?>
</ul>
...并在行的开头对齐<?php ?>
标记,或者您可以这样做:
<ul><?php for ($Index = 1; $Index <= 10; $Index++) { ?>
<li><?php echo $Index; ?></li>
<?php } ?></ul>
......但是看起来很荒谬,这个:
<ul><?php for ($Index = 1; $Index <= 10; $Index++) echo "\n <li>$Index</li>"; ?>
</ul>
...可能是实现你所谈论的最好的方式,留下最少的歧义空间(不同的PHP版本似乎稍微有点不同 - 例如在PHP 4.3.10中,至少有一个隐含的行在PHP 5中不存在的?>
标记之后中断(我认为这可能是一个错误)。这是我不使用混合HTML和PHP的原因之一(虽然我知道很多人不同意我在这一点上)但我宁愿这样做:
<?php
$out = "<ul>\n";
for ($Index = 1; $Index <= 10; $Index++) $out .= " <li>$Index</li>\n";
$out .= "</ul>";
echo $out;
?>
答案 1 :(得分:0)
使用空格。 “”* 8,16,20等...
或者仍然在你的php中使用\t
,然后在用空格\t
替换之后将其全部回显,
echo preg_replace('/^\t/', '4_SPACES_HERE', $output_html);