【发布时间】:2018-11-11 14:03:13
【问题描述】:
我有以下 PHP:
<?php
$items = array('foo', 'bar', 'baz', 'qux');
?>
<div>
<?php foreach ($items as $item): ?>
<a><?= $item; ?></a>
<?php endforeach; ?>
</div>
原始输出是这样的:
<div>
<a>foo</a>
<a>bar</a>
<a>baz</a>
<a>qux</a>
</div>
它看起来很丑而且很乱,但这是实际的输出。不过,这并不困扰我。问题是<a> 标签之间有空格。在浏览器中,我得到了这个结果:
注意元素之间的空间。 我不想这样。
我知道你可以使用font-size、letter-spacing 等来避免这个问题,但我不想这样做,因为问题出在标记中。
我也尝试像这样注释掉空格:
<div><!--
<?php foreach ($items as $item): ?>
--><a><?= $item; ?></a><!--
<?php endforeach; ?>
--></div>
产生以下输出:
<div><!--
--><a>foo</a><!--
--><a>bar</a><!--
--><a>baz</a><!--
--><a>qux</a><!--
--></div>
结果如下:
这是我想要的结果,是的,但是这种注释技术是可笑的......它还搞砸了语法突出显示:
问题
有没有一种合法的方法可以在不使用 CSS 或俗气的评论的情况下删除元素之间的空格?
编辑:我使用这样的简单标记只是为了问题的简单性。当我在 for 循环中有很多元素时,最好的方法是什么,而不仅仅是 <a> 标签,而使用 echo 会很困难? IE。您在哪里需要关闭 PHP 并使用速记 <?= ?> 标签?
【问题讨论】:
-
忘记这条评论
-
我不同意你认为问题出在标记上的观点;问题在于演示文稿,因此 css 将是解决该问题的最合乎逻辑的解决方案。使用
a { display: inline-block; }之类的东西可以解决您的问题。 -
我同意,是的。但是为了简单起见,我使用了如此简单的标记(检查我的编辑)。当我有一个更复杂的结构并且使用 CSS 会很困难时,我会怎么做?我可能正在寻找一些神奇的 PHP 函数。只是从输出中去除空格的东西。
-
生成的 html 结构越复杂,使用 css 解决它而不是格式化源代码以匹配所需的输出就越有意义:-)
-
老实说,更改代码格式永远不会改变代码的行为方式。
标签: php whitespace removing-whitespace