php domdocument创建破解html的自我结束标记

时间:2014-01-11 15:43:59

标签: php domdocument

我正在解析用户输入文字&使用正则表达式将youtube网址转换为iframe,因此我最终得到以下内容:

<iframe title="YouTube video player" width="640" height="370" src="http://www.youtube.com/embed/*id*" frameborder="0" allowfullscreen></iframe>

然后通过DOMdocument()解析文本,将上述内容转换为自闭标签:

<iframe class="EmbeddedVideo" title="YouTube video player" width="640" height="370" src="http://www.youtube.com/embed/xP4HhaUMB3I" frameborder="0" allowfullscreen=""/>

在Chrome和&amp ;;歌剧。如果我手动将html更改回:

<iframe class="EmbeddedVideo" title="YouTube video player" width="640" height="370" src="http://www.youtube.com/embed/xP4HhaUMB3I" frameborder="0" allowfullscreen=""></iframe>

它有效。

首先,自闭标签有什么问题(因为我看不到任何东西)?

有没有办法强制domdocument()使用'正确'的结束标记?

1 个答案:

答案 0 :(得分:5)

您可以使用LIBXML_NOEMPTYTAG选项:

$doc->saveXML($node, LIBXML_NOEMPTYTAG);

这会强制将<iframe />扩展为<iframe></iframe>

但是,您也可以使用saveHTML()(首选)。这将正确保留HTML标记:

$doc->saveHTML();