2011-12-13 1 views
4

Я использую QueryPath для обертывания <div> вокруг встроенных видеороликов на сайте, который содержит смесь <object> и .QueryPath меняет теги 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

Обнаружено решение, которое работает. Оказывается, добавив некоторый контент между ... 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; 
4

-> 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; 
+0

upvote + i успел положить некоторый фиктивный контент в сам тег как взломать – GDmac