【问题标题】:when i use php echo, why tag elements are closed automatically?当我使用 php echo 时,为什么标签元素会自动关闭?
【发布时间】:2018-06-02 04:10:58
【问题描述】:

我试图让这段代码如下。

我写的 PHP 代码:

$i = 1;
<div class="sampleNumberIndex">
  <p> 
    <h2> <?php echo $i; ?></h2> 
  </p> 
</div>

按预期编写代码

<div class="sampleNumberIndex"> 
  <p> 
    <h2> 1 </h2> 
  </p> 
</div>

但是 php 代码做到了。

<div class="sampleNumberIndex"> 
  <p> </p>
    <h2> 1 </h2> 
  <p> </p>
</div>

我用的是chrome,是什么原因造成的?

【问题讨论】:

    标签: php html autocomplete tags


    【解决方案1】:

    这与 PHP 无关。只是 html 不希望您将 h2-tags 包装在 p-tags 中。无论您要在这里完成什么,您都应该使用 div。

    【讨论】:

      【解决方案2】:

      您可能正在查看修复不良 HTML 代码的 Inspect Element 部分。真正的源代码可在View page source 部分获得。尝试Ctrl + U查看源代码。

      【讨论】:

        【解决方案3】:

        您的问题不是很清楚,但我想您在浏览器的 DOM 检查器中看到了意外的标签。 “显示页面源代码”应该显示您的浏览器收到的实际原始 HTML。

        编辑:@AliN11 所说的

        HTML 在内容缺失时推断标签。在您的情况下,HTML 浏览器知道h2 不能出现在p 元素的内容中,因此它在h2 之前添加了&lt;/p&gt; 结束元素标记。然后在h2元素之后,遇到&lt;/p&gt;结束元素标签,并在它之前插入一个&lt;p&gt;开始元素标签,因为在上下文位置没有打开。

        第一次插入——&lt;/p&gt; 结束元素标记——是 HTML 常规解析规则的一部分;根据the HTML specification,允许省略&lt;/p&gt;。但是第二次插入 - 对于&lt;p> 开始元素标记 - 不是,而是 HTML 恢复(修复)开始的效果。

        我已经在 project page of my SGML software 和我去年发表的演讲的链接幻灯片中详细解释了 HTML/SGML 标记插入。

        【讨论】:

        • 感谢大家的回答。
        猜你喜欢
        • 1970-01-01
        • 2010-11-26
        • 1970-01-01
        • 2013-11-25
        • 1970-01-01
        • 1970-01-01
        • 2019-04-08
        • 1970-01-01
        相关资源
        最近更新 更多