2015-01-23 6 views
0

Я использую html DOMDocument, чтобы найти все экземпляры iFrames с переменной $content. Я могу выводить изображение для каждого экземпляра, но скорее заменил бы iframe изображением, а затем сохранил бы его обратно в переменную содержимого. Вместо echo В моем результате я хотел бы заменить текущий iframe. Как мне это сделать?Разбор HTML с htmlDOM, замените все теги iframe другим

 $count = 1; 
     $dom = new DOMDocument; 
     $dom->loadHTML($content); 
     $iframes = $dom->getElementsByTagName('iframe'); 
     foreach ($iframes as $iframe) { 
      echo "<img class='iframe-".self::return_video_type($iframe->getAttribute('src'))." iframe-ondemand-placeholderImg iframe-".$count."' src='" .$placeholder_image. "' height='".$iframe->getAttribute('height')."' width='" .$iframe->getAttribute('width'). "' data-iframe-src='" .$iframe->getAttribute('src'). "' /><br />"; 
      $count++; 
     } 
     $content = $dom->saveHTML(); 

     return $content; 

ответ

1
public DOMNode DOMNode::replaceChild (DOMNode $newnode , DOMNode $oldnode) 

http://php.net/manual/en/domnode.replacechild.php

Что-то вроде этого:

$iframes = $dom->getElementsByTagName('iframe'); 
$i = $iframes->length - 1; 
while ($i > -1) { 
    $iframe = $iframes->item($i); 
    $ignore = false; 
    $img = $dom->createElement("img"); 
    $img->setAttribute("src",$iframe->getAttribute('src')); 
    $iframe->parentNode->replaceChild($img, $iframe); 
    $i--; 
}