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

Ori*_*oco 4 php domdocument

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

<iframe title="YouTube video player" width="640" height="370" src="http://www.youtube.com/embed/*id*" frameborder="0" allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)

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

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

这打破了Chrome和Opera中的页面.如果我手动将html更改回:

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

有用.

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

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

hek*_*mgl 5

您可以使用以下选项LIBXML_NOEMPTYTAG:

$doc->saveXML($node, LIBXML_NOEMPTYTAG);
Run Code Online (Sandbox Code Playgroud)

这将迫使扩大<iframe /><iframe></iframe>

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

$doc->saveHTML();
Run Code Online (Sandbox Code Playgroud)

  • 这打破了像'<br />`这样的标签 (2认同)
  • 据我所知,浏览器将其解释为两个换行符:( (2认同)