使用str_replace的php意外输出

时间:2013-06-29 19:29:39

标签: php str-replace

我有以下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>

这很奇怪.. 任何想法有什么不对?

感谢

编辑:我发现用firebug检查是唯一错误的。当显示浏览器的源时,它会按预期显示。尽管如此,浏览器似乎是无效的HTML标记..

3 个答案:

答案 0 :(得分:1)

我相信这是因为你不能在内联元素中使用块级元素。与此类似,您无法在<p>代码中添加<span>标记。

  

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

答案 1 :(得分:0)

也许你正在显示“选定的源代码”。在firefox中,所选源代码是带有标准使用规则的修改版本。您可以使用show page source显示检索到的DOM。

答案 2 :(得分:0)

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

  1. Div元素包含换行符所以链接中的div似乎是firefox拒绝的。
  2. 插件....卸载插件。
  3. 那样做你很高兴:D