QueryPath меняет теги iframe на самозакрывающиеся? - PullRequest
4 голосов
/ 14 декабря 2011

Я использую 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 ]

4 голосов
/ 26 апреля 2012

Метод -> html не устанавливает флаг LIBXML_NOEMPTYTAG при использовании DOMDocument :: saveXML, если вам нужны закрывающие теги, вы должны использовать -> xhtml вместо этого, который передает этот флаг.например,

    $content = qp($content)
    ->find('object,iframe,a.evdPlayer')
    ->wrap('<div class="splashBack"></div>')
    ->top('body')->children()
    ->xhtml();
    return $content;
2 голосов
/ 14 декабря 2011

Нашел решение, которое похоже на работу.Оказывается, что вставляя некоторый контент между ... querypath распознает необходимость закрывающего тега и оставляет его в покое.Это хак, но пока работает!

$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;
...