最近我正在为我正在研究的项目打印一些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标签还有两个额外的缩进。
这只是预期的行为还是能以某种方式纠正?
答案 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内。