4

我正在使用 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 />,这出于某种原因搞砸了。有没有办法阻止它改变它包装的标签?

提前致谢!

4

2 回答 2

4

->html 方法在使用 DOMDocument::saveXML 时不会设置 LIBXML_NOEMPTYTAG 标志,如果您需要结束标签,您应该使用 ->xhtml 来代替它传递此标志。例如

    $content = qp($content)
    ->find('object,iframe,a.evdPlayer')
    ->wrap('<div class="splashBack"></div>')
    ->top('body')->children()
    ->xhtml();
    return $content;
于 2012-04-26T00:56:15.673 回答
2

找到了一个似乎可行的解决方案。事实证明,通过在 ... 之间插入一些内容,查询路径会识别出对结束标记的需求并将其保留。这是一个黑客,但它现在有效!

$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;
于 2011-12-14T08:27:52.153 回答