【发布时间】:2015-02-11 20:40:54
【问题描述】:
我有一个 Wordpress 功能,可以检查用户是否填写了他或她个人资料中的某些字段。如果填写,则回显其内容,如果没有:不要。这是乐趣的精简版
<ul>
<?php if (get_the_author_meta('url',$theID)) : ?>
<li class="url">
<a href="<?php the_author_meta('url',$theID); ?>" title="">Website</a>
</li>
<?php endif; // End check for url ?>
<?php if ( get_the_author_meta('twitter',$theID)) : ?>
<li class="twitter">
<a href="http://twitter.com/<?php the_author_meta('twitter',$theID); ?>" title="">Twitter</a>
</li>
<?php endif; // End check for twitter ?>
<?php if ( get_the_author_meta('instagram',$theID)) : ?>
<li class="instagram">
<a href="http://instagram.com/<?php the_author_meta('instagram',$theID); ?>" title="">Instagram</a>
</li>
<?php endif; // End check for instagram ?>
<?php if ( get_the_author_meta('linkedin',$theID)) : ?>
<li class="linkedin">
<a href="http://www.linkedin.com/<?php the_author_meta('linkedin',$theID); ?>" title="">LinkedIn</a>
</li>
<?php endif; // End check for linkedin ?>
</ul>
这很好用。但是,出于布局目的,我在这些元素上使用inline,我不能使用浮点数。您可能知道,这会导致元素之间出现“间隙”,因为它们都在新行上回显。
我不想要这些差距。我知道我可以通过任意负边距来解决它,但我不想使用它,因为我使用的是响应式、基于百分比的布局。解决方案是通过将所有 HTML 粘合在一起而无需换行来“填补 HTML 中的空白”。举个例子:
内联显示时会产生间隙:
<ul>
<li>Twitter</li>
<li>Instagram</li>
<li>LinkedIn</li>
</ul>
不会有间隙:
<ul>
<li>Twitter</li><li>Instagram</li><li>LinkedIn</li>
</ul>
我正在寻找一个 PHP 解决方案(无 CSS),它可以摆脱 ul 中的所有新行,但我不知道从哪里开始。或者,更准确地说,我不知道将删除新行的函数放在哪里。如何包装所有 HTML,然后用 ... nothing 替换新行?
【问题讨论】:
-
您是否尝试过删除源代码中 HTML 和 PHP 之间的空格?
-
好吧,与其将 HTML 和 PHP 部分混合在一起,不如将 HTML 代码收集到一个字符串中输出——这样一开始就不会出现空格;但这宁愿使模板变得混乱。第二种选择是使用输出缓冲区,然后在输出缓冲区内容之前替换其中的空格。
-
在这种情况下,我个人更喜欢 APAD1 已经发布的链接中提到的评论方法——它保留了使用 PHP 作为模板语言的优势,消除了不需要的效果,并且可能修改此模板时,您也不会忘记上面的附加 PHP 注释。
-
@CBroe 查看我自己的答案。谢谢。谢谢 APAD1 我只知道负边距黑客,而不是评论黑客!
标签: php wordpress replace newline