当我使用php echo时,为什么标签元素会自动关闭?

时间:2018-05-31 06:01:32

标签: php html autocomplete tags

我试图制作如下代码。

我写的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,是什么让它成为那样的?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

编辑:@AliN11所说的

HTML在内容中缺少时会推断标签。在您的情况下,HTML浏览器知道h2无法在p元素的内容中显示,因此它会在</p>之前添加h2结束元素标记。然后在h2元素之后,它遇到</p> end-element标记,并在其前面插入一个<p> start-element标记,因为没有在上下文位置打开。

第一次插入 - 对于</p> end-element标记 - 是HTML的常规解析规则的一部分;根据{{​​3}},允许省略</p>。但第二次插入 - 适用于<p&gt; start-element标签 - 不是,并且是HTML恢复(修复)的结果。

我已经详细解释了the HTML specification上的HTML / SGML标签插入以及去年我给出的关于它的链接幻灯片。