// **************************************************
function replaceHtmlById($htmlOriginal, $id, $nuevoHtml) {
libxml_use_internal_errors(true);
// --- DOM PRINCIPAL ---
$dom = new DOMDocument;
$dom->loadHTML(mb_convert_encoding($htmlOriginal, 'HTML-ENTITIES', 'UTF-8'));
$xpath = new DOMXPath($dom);
// Buscar el nodo con el ID indicado
$nodes = $xpath->query("//*[@id='$id']");
if ($nodes->length === 0) {
return $htmlOriginal; // No encontró el ID
}
$nodoViejo = $nodes->item(0);
// --- NUEVO NODO ---
// Usamos un wrapper para poder insertarlo en DOMDocument
$domNuevo = new DOMDocument;
$domNuevo->loadHTML("<div id='wrap'>$nuevoHtml</div>", LIBXML_HTML_NODEFDTD | LIBXML_HTML_NOIMPLIED);
// Nodo raíz dentro del wrapper
$nodoNuevo = $domNuevo->getElementById('wrap')->firstChild;
// Importar el nodo nuevo al DOM original
$nodoNuevoImportado = $dom->importNode($nodoNuevo, true);
// Reemplazar
$nodoViejo->parentNode->replaceChild($nodoNuevoImportado, $nodoViejo);
// Devolver HTML
return $dom->saveHTML();
}
// *********************************************
function emptyHtmlById($htmlOriginal, $id) {
libxml_use_internal_errors(true);
$dom = new DOMDocument;
$dom->loadHTML(mb_convert_encoding($htmlOriginal, 'HTML-ENTITIES', 'UTF-8'));
$xpath = new DOMXPath($dom);
// Buscar nodo
$nodes = $xpath->query("//*[@id='$id']");
if ($nodes->length === 0) {
return $htmlOriginal; // ID no encontrado
}
$nodo = $nodes->item(0);
// Eliminar todos los hijos
while ($nodo->firstChild) {
$nodo->removeChild($nodo->firstChild);
}
return $dom->saveHTML();
}
******************************************************
function removeHtmlById($htmlOriginal, $id) {
libxml_use_internal_errors(true);
$dom = new DOMDocument;
$dom->loadHTML(mb_convert_encoding($htmlOriginal, 'HTML-ENTITIES', 'UTF-8'));
$xpath = new DOMXPath($dom);
// Buscar el nodo con ese ID
$nodes = $xpath->query("//*[@id='$id']");
if ($nodes->length === 0) {
return $htmlOriginal; // No existe el ID
}
$nodo = $nodes->item(0);
// Eliminar el nodo completo
$nodo->parentNode->removeChild($nodo);
return $dom->saveHTML();
}
$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTML($cuerpo);
libxml_clear_errors();
$xpath = new DOMXPath($dom);
$nodes = $xpath->query("//*[@id='parrilla_".$_GET['parrilla_old']."']");
if ($nodes->length > 0) {
$htmlParrilla_old = $dom->saveHTML($nodes->item(0));
}
$nodes = $xpath->query("//*[@id='parrilla_".$_GET['parrilla_new']."']");
if ($nodes->length > 0) {
$htmlParrilla_new = utf8_decode($dom->saveHTML($nodes->item(0)));
}
$new_cuerpo = removeHtmlById($cuerpo,"parrilla_".$_GET["parrilla_new"]);
$new_cuerpo = replaceHtmlById($new_cuerpo, "parrilla_".$_GET["parrilla_old"], $htmlParrilla_new);
