PHP:从单个<! - ?php? - >呈现时,html标记之间没有空格

时间:2015-10-28 22:46:07

标签: php html twitter-bootstrap echo

这是一个奇怪的问题,我想知道它为什么会发生..

我正在使用Yii2框架,我创建了一个widget来渲染来自Twitter bootstrap的缩略图,如果需要,我已经使代码渲染了多个按钮,但是当我渲染时超过1个按钮,它们之间似乎没有任何空格,我检查了HTML代码,看起来没问题,我甚至将视图与2个相同的代码进行了比较,一个来自PHP,另一个来自HTML

它的外观如何,两者都有相同的HTML代码,但第一个是从PHP渲染的 enter image description here

这是HTML代码的方式,两种情况都有相同的代码,区别在于第一个代码来自php

<div class="thumbnail">
    <div class="caption">
        <h3>testing</h3>
        <p>Lorem ipsum dolor</p>
        <p>
            <button type="button" class="btn btn-default" name="/localhost/backend/web/site/index">Button</button>
            <button type="button" class="btn btn-default" name="/localhost/backend/web/site/index">Button</button>
            <button type="button" class="btn btn-default" name="/localhost/backend/web/site/index">Button</button>
        </p>
    </div>
</div>

<div class="thumbnail">
    <div class="caption">
        <h3>testing</h3>
        <p>Lorem ipsum dolor</p>
        <p>
            <button type="button" class="btn btn-default" name="/localhost/backend/web/site/index">Button</button>
            <button type="button" class="btn btn-default" name="/localhost/backend/web/site/index">Button</button>
            <button type="button" class="btn btn-default" name="/localhost/backend/web/site/index">Button</button>
        </p>
    </div>
</div>

4 个答案:

答案 0 :(得分:1)

Php默认取消白色空格。但是,您可以通过使用&amp; nbsp。

告诉它添加空格

这是语法: echo str_repeat('',1);

第一个参数将添加空格,第二个参数是您要添加的空间

您可以在回显按钮后将其放入

答案 1 :(得分:0)

我有类似的问题。尝试在按钮之间插入html注释,因为空格也有宽度。 E.g。

<input .... /><!--
--><input .... /><!--
--><input .... />

答案 2 :(得分:0)

我90%肯定这是因为css和输出的html的结合。

如果您有按钮元素css样式:display: inline-block并且html标记之间至少有一个空格,您将获得空格(新行也计算) with:space

 <button>foo</button>
 <button>bar</button>

没有空间

 <button>foo</button><button>bar</button>

为什么使用php它的空格可能是因为在渲染过程中会出现空白空白

此外,如果发布的代码来自带有chrome或其他内容的inspecting the code,那么它不是真正的代码结构。试着看右击 - &gt;源代码

如果你想修复它。

可以通过以下方式解决:

  • 将元素的css更改为display: block; float: left - &gt;使其成为有元素的块元素。

  • 将您的css更改为使用display: flex - 如果您不知道,请使用Google。

  • 删除html标记之间的空格/缩小html - 并保留display: inline-block

答案 3 :(得分:0)

通过在每个元素

之间添加regex来解决此问题

例如,我们在foreach的{​​{1}}循环中处理了多个元素,结果以字符串形式连接

php

为了让它为每个元素创建一个新行,<?php function createButtons($data) { /** * [$html Here is where the html buttons are going to be stored] * @var string */ $html = ''; /** * This will generate Html Button for each element in the array and concatenate into $html as string like this: * <button><button><button><button> */ foreach($data as $button) $html .= Html::Button($data['name'], $data['options']); return $html; } 是一个"\n"代码来添加新行

regex