Php p元素内的内容包裹在元素外

Php p元素内的内容包裹在元素外,php,html,Php,Html,我在php应用程序中使用以下代码 <p class="foo"><?php echo $foo->data; ?></p> 将在浏览器中呈现,如下所示: <p class="foo"></p> <p>foo dataription here</p> <p></p> 这里是foo数据描述 但如果我像这样使用: <?php echo $foo->data; ?&

我在php应用程序中使用以下代码

<p class="foo"><?php echo $foo->data; ?></p>

将在浏览器中呈现,如下所示:

<p class="foo"></p>
<p>foo dataription here</p>
<p></p>

这里是foo数据描述

但如果我像这样使用:

<?php echo $foo->data; ?>
<p>foo description here</p>
<p class="foo"></p>
<p>foo description here</p>
<p></p>

然后,它正确地呈现DOM元素,如下所示:

<?php echo $foo->data; ?>
<p>foo description here</p>
<p class="foo"></p>
<p>foo description here</p>
<p></p>
foo这里的描述

为什么不像下面那样渲染

<p class="foo">foo description here</p>

foo描述在这里


我注意到
$foo->data
带有带有
的html标记。但任何块级元素(如div或p)都不能驻留在p元素中

因此,

这里是foo描述

由浏览器按如下方式渲染:

<?php echo $foo->data; ?>
<p>foo description here</p>
<p class="foo"></p>
<p>foo description here</p>
<p></p>

这里是foo描述

当它展开块级元素时,即
p
元素在
p.foo
元素之外。这只是因为我们不能在
p
元素的语义上嵌套任何块级元素

所以,在p元素中插入任何内容时要小心,以确保
p
元素中没有任何块级元素

p元素只能包含

措辞内容是文档的文本,以及在段落内标记该文本的元素。它们是:

a、 缩写、区域(如果是地图元素的后代)、音频、b、bdi、bdo、br、按钮、画布、引用、代码、数据、数据列表、del、dfn、em、embed、i、iframe、img、input、ins、kbd、keygen、label、map、mark、math、meter、noscript、object、output、progress、q、ruby、s、samp、script、select、small、span、strong、sub、sup、svg、template、textarea、,时间、单位、变量、视频、wbr、文本

希望这对更多的用户有所帮助