上下文
我有以下代码:
<ul>
<?php foreach($users as $user){ ?>
<li>
<?php echo $user->name ?>
</li>
<?php } ?>
</ul>
它呈现:
<ul>
</ul>
当有 $users
,一切正常。然而,当没有时,<ul>
以空格呈现,使其无法归因于 CSS 选择器 :empty
.
我通过这样做设法解决了问题:
<ul><?php foreach($users as $user){ ?>
<li>
<?php echo $user->name ?>
</li>
<?php } ?></ul>
它呈现:
<ul></ul>
如果代码中没有类似的中断,列表现在是空的(甚至没有空格),但我害怕就这样离开它,而其他一些程序员修复了缩进并破坏了它。
我的问题
有没有办法在代码中添加换行符而不添加空格或中断呈现的 html 元素?
最佳答案
My question is: Is there a way to add line breaks to the code without adding blank spaces or breaks to the rendered html element?
您可以使用 HTML 注释
<ul><!--
<?php foreach($users as $user){ ?>
--><li><!-- …
此技术也用于 fight the space between inline block elements , 如果您想保持 HTML 代码的可读性。
或者您当然可以使用输出缓冲,然后在将输出返回给客户端之前替换这些空格(相当复杂,如果您想正确地做的话。)
对于您的实际问题,可能是最简单的解决方案:
如果没有任何列表项,为什么还要输出 ul
元素?
用 if
包围整个 block ,检查数组包含多少元素——如果没有,就不要输出任何东西。
关于php - 如何防止在行尾呈现空白?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36210808/