0

我有以下 php 代码:

    $html = '<p>[tag]</p>';
    $test = "<a href='#'><div class='test'>button</div></a>";
    $html = str_replace("[tag]", $test, $html);

使用 echo htmlentities($html) 时,我得到了预期的结果:

<p><a href='#'><div class='test'>button</div></a></p> 

但是当回显 $html 时,firefox 会像这样呈现它:

<p>
<a href="#"></a>
</p>
<div class="test">
<p></p>

这很奇怪..有什么想法有什么问题吗?

谢谢

编辑:我发现只有在检查萤火虫时才会出错。显示浏览器的源代码时,它按预期显示。尽管如此,对于浏览器来说,它似乎是无效的 html 标记..

4

3 回答 3

1

我相信这是因为内联元素中不能有块级元素。与此类似,您不能将<p>标签放在标签内<span>

HTML 4.01规定<a>元素只能包含内联元素。A<div>是一个块元素,因此它可能不会出现在 <a>.

于 2013-06-29T19:31:58.780 回答
0

也许您正在显示“选定的源代码”。在 Firefox 中,所选源代码是具有标准使用规则的修改版本。您可以使用显示页面源来显示检索到的 DOM。

于 2013-06-29T19:34:29.437 回答
0

请帮我一个忙:用 span 替换 div 元素,它会起作用。
原因:

  1. div 元素包含换行符,因此链接内的 div 似乎 Firefox 拒绝。
  2. 插件......卸载插件。

这样做,你很高兴:D

于 2013-06-29T19:44:08.413 回答