QueryPath将iframe标记更改为自动关闭?

时间:2011-12-13 22:00:40

标签: querypath

我正在使用QueryPath在包含<div><object>嵌入混合的网站上围绕嵌入视频打包<iframe>

我尝试了以下代码:

    $content = qp($content)
    ->find('object,iframe,a.evdPlayer')
    ->wrap('<div class="splashBack"></div>')
    ->top('body')->children()
    ->html(); // << It's wanting to remove the </iframe> Grrr.
return $content;

但它似乎想要将我的<iframe></iframe>代码更改为<iframe />,因为某种原因导致问题变得混乱。有没有办法阻止它改变它包装的标签?

提前致谢!

2 个答案:

答案 0 :(得分:4)

- &gt; html方法在使用DOMDocument :: saveXML时不设置LIBXML_NOEMPTYTAG标志,如果您需要使用结束标记 - &gt; xhtml而不是传递此标志。例如

    $content = qp($content)
    ->find('object,iframe,a.evdPlayer')
    ->wrap('<div class="splashBack"></div>')
    ->top('body')->children()
    ->xhtml();
    return $content;

答案 1 :(得分:2)

找到似乎有效的解决方案。事实证明,通过在...之间插入一些内容,querphath可以识别出对结束标记的需要并将其单独留下。这是一个黑客,但它现在有效!

$content = qp($content)
    ->find('object,iframe,a.evdPlayer')
    ->text('[ video embed ]')
    ->wrap('<div class="splashBack"></div>')
    ->top('body')->children()
    ->html(); // << It's wanting to remove the </iframe>
return $content;