<?php //http://es.stackoverflow.com/q/44617/127
$html = '
<body>
<iframe allowfullscreen="" frameborder="0" height="315px"
src="https://w...content-available-to-author-only...e.com/embed/xxxyyyxxx" width="560px">
</iframe>
<div><p>¡Acá más texto!</p></div>
<iframe src="https://w...content-available-to-author-only...o.com/iframe" width="333px"></iframe>
</body>';
//Convertir utf8 a entities
//Generar el DOM
$doc = new DOMDocument;
$opcionesLibXML = LIBXML_COMPACT | LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD;
$doc->loadHTML($htmlISO, $opcionesLibXML);
//Obtener todos los iframes
$iframes = $doc->getElementsByTagName('iframe');
//Reemplazar c/u
foreach ($iframes as $iframeViejo) {
//Crear un nuevo iframe y asignar el src
$iframeNuevo = $doc->createElement('iframe');
$iframeNuevo->setAttribute('src', $iframeViejo->getAttribute('src'));
//Crear un nuevo figure y agregarle el nuevo iframe
$figureNuevo = $doc->createElement('figure');
$figureNuevo->appendChild($iframeNuevo);
//reemplazar viejo por nuevo
$iframeViejo->parentNode->replaceChild($figureNuevo, $iframeViejo);
}
//DOM -> string final
$resultado = $doc->saveHTML($doc->documentElement);
//documentElement :: importante para no recibir entities
echo $resultado;