ccc

PHP: Cambiar, modificar o borrar contenido capas por su id

 // **************************************************

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);

No hay comentarios:

Publicar un comentario