html输出中的换行符和缩进

时间:2010-10-10 18:07:00

标签: php

最近我正在为我正在研究的项目打印一些HTML源代码。我喜欢保持标记的整洁和可读性。我注意到在某些地方输出的html没有换行符,在某些地方有过多的缩进。例如,使用以下代码,我保留了源文件中的缩进:

    <div id="sections">
    <ul>
    <?php if(!empty($details)) { ?>
        <li><a href="#details"><span>Details</span></a></li>

    <?php } if(!empty($address) { ?>
        <li><a href="#viewmap"><span>Location Map</span></a></li>

    <?php } if(!empty($reviews) { ?>
        <li><a href="#reviews"><span>Reviews (<?php echo $numrows; ?>)</span></a></li>

    <?php } if($email != null) { ?>
        <li><a href="#sendemail"><span>Send an Email</span></a></li>
    <?php } ?>
    </ul>

生成的HTML输出如下:

    <div id="sections">
    <ul>
                <li><a href="#details"><span>Details</span></a></li>

                <li><a href="#viewmap"><span>Location Map</span></a></li>

                <li><a href="#sendemail"><span>Send an Email</span></a></li>
            </ul>
    </div>

在这里我们可以看到DIV和UL标签左侧有两个标签缩进 - 这很好。但是LI标签左边有5个缩进 - 如果根据我的代码,它应该只有3个。最终的UL标签还有两个额外的缩进。

这只是预期的行为还是能以某种方式纠正?

5 个答案:

答案 0 :(得分:1)

如果你担心缩进,你可以将你的php标签移动到他们的行的开头,然后当它们崩溃时,不会有额外的缩进,这是他下一行添加的。那当然会使你的来源更难阅读。这比阅读渲染的html IMO要重要得多。

答案 1 :(得分:1)

问题是你缩进了整个块。空间来自&lt;?php?&gt;之前在每一行

答案 2 :(得分:0)

PHP解释器保持<?php...?>标签之外的所有内容都不受影响。唯一的例外是尾随行Feed,它位于结束标记as documented之间。

您可能正在混合制表符和空格。如果你使用一个像样的编辑器,应该有一个功能,使它们可见。

答案 3 :(得分:0)

好吧,换行符在你的代码中。 Everything except the line break immediately after ?> gets put out

  

[...]当PHP点击?>结束标记时,它只是开始输出它找到的任何内容(除了紧接着的新行 - 请参阅instruction separation),直到它遇到另一个开始标记。

所以只看这个例子:

<?php if(!empty($details)) { ?>
    <li><a href="#details"><span>Details</span></a></li>

<?php }

?>被推出后,除了换行符之外的所有内容,包括以下<?php之前的换行符,所以:

    <li><a href="#details"><span>Details</span></a></li>
‍

答案 4 :(得分:0)

所以?输出完全匹配您的代码。我不明白,为什么会出现问题?

*tab**tab*<div id="sections">*newline*
*tab**tab*<ul>*newline*
*tab**tab*<?php if(!empty($details)) { ?>
*tab**tab**tab*<li><a href="#details"><span>Details</span></a></li>*newline*
*newline*
*tab**tab*<?php } if(!empty($address) { ?>
*tab**tab**tab*<li><a href="#viewmap"><span>Location Map</span></a></li>*newline*
*newline*
*tab**tab*<?php } if(!empty($reviews) { ?>
*tab**tab**tab*<li><a href="#reviews"><span>Reviews (<?php echo $numrows; ?>)</span></a></li>*newline*
*newline*
*tab**tab*<?php } if($email != null) { ?>
*tab**tab**tab*<li><a href="#sendemail"><span>Send an Email</span></a></li>*newline*
*tab**tab*<?php } ?>
*tab**tab*</ul>

删除php代码,您会看到标签和换行符的数量匹配。

哦,顺便说一句:第一个ul应该有一个标签,因为它在div内。