Usando DOMDocument para modificar un HTML con PHP

Una de las primeras cosas que se aprenden cuando se quiere implementar un service worker en un sitio web es que requiere SSL (una dirección https). Desde que vi la velocidad cegadora que los services workers pueden proporcionar a un sitio web, he estado obsesionado con la preparación del SSL para mi web. Implementar un SSL con .htaccess fue fácil, la parte más difícil fue la actualización de los enlaces activos en el contenido de la web. Al principio piensas que las expresiones regulares serán la cura rápida para ello, pero cualquier persona que tenga experiencia con expresiones regulares sabe que el trabajo con las URLs es una pesadilla. Es por eso que utilizar expresiones regulares para esta tarea puede ser una decisión equivocada.

La decisión correcta es DOMDocument, un objeto PHP nativo que te permite trabajar con HTML de una manera lógica y sobretodo agradable. Se empieza por cargar el HTML en una instancia DOMDocument y luego usas las funciones predefinidas para introducir o modificar contenido.

// Formateando contenido para SSL
function format_post_content($content = '') {
  $document = new DOMDocument();
  $document->loadHTML($content);
  
  $tags = $document->getElementsByTagName('img');
  foreach ($tags as $tag) {
    $tag->setAttribute('src', 
      str_replace('http://programacion.net', 
                  'https://programacion.net', 
                  $tag->getAttribute('src')
      )
    );
  }
  return $document->saveHTML();
}

En mi ejemplo anterior, encuentro todos los elementos img y los reemplazo con el protocolo 'https: //'. Voy a terminar haciendo lo mismo con los src de los iframe, los href de los enlaces, y algunas otras etiquetas que raramente utilizado. Cuando se hacen las modificaciones, llamo a la función saveHTML para obtener la nueva cadena.

No caigas en la trampa de tratar de utilizar expresiones regulares con HTML, terminarás fracasando estrepitosamente. DOMDocument es ligero y hará que tu código sea infinitamente más fácil de mantener.

Hasta aquí el tutorial de cómo usar DOMDocument para modificar un HTML con PHP. Este ejemplo también te sirve para modificar enlaces por un cambio de dominio o por otra razón. Las expresiones regulares son una pesadilla para los programadores, os lo digo por experiencia. Por eso, el uso de DOMDocument es más adecuado para estos quehaceres, además que es mucho más sencillo de mantener.

Ya sabéis que en programacion.net estamos abiertos a vuestras sugerencias y dudas que nos podéis dejar en la zona de comentarios de más abajo. También podéis publicar vuestros tutoriales a través de la intranet de usuarios habilitada para ello.

Supongo que como programador, habrás trabajado con expresiones regulares alguna vez, ¿qué opinion te merecen? ¿Crees que para este caso hubiera sido mejor utilizarlas?

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP