Estoy tratando de eliminar ciertos enlaces dependiendo de su etiqueta de identificación, pero dejo el contenido del enlace. Por ejemplo, yo quiero convertirPHP Dom Eliminar elemento dejar contenido
Some text goes <a href="http://www.domain.tdl/" id="remove">here</a>
a
Some text goes here
He intentado usar el siguiente.
$dom = new DOMDocument;
$dom->loadHtml(mb_convert_encoding($html, 'HTML-ENTITIES', "UTF-8"));
$xp = new DOMXPath($dom);
foreach($xp->query('//a[contains(@id="remove")]') as $oldNode) {
$revised = strip_tags($oldNode);
}
$revised = mb_substr($dom->saveXML($xp->query('//body')->item(0)), 6, -7, "UTF-8");
echo $revised;
más o menos tomados de here pero simplemente escupe el mismo contenido de $html
.
¿Alguna idea de cómo lograría esto?
No está modificando su documento aquí, es por eso que escupe el mismo contenido. Ejemplo de que proporcionó llamadas 'replaceChild' en el objeto DOM, y está creando una variable que luego sobrescribirá con una salida de' saveXML' –
Buena pregunta, +1. Vea mi respuesta de una sola solución de expresión XPath que selecciona exactamente los nodos deseados. :) –