我试图制作如下代码。
我写的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,是什么让它成为那样的?
答案 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标签插入以及去年我给出的关于它的链接幻灯片。