3v4l.org

run code in 300+ PHP versions simultaneously
<?php // Modificar enlaces que contienen una imagen // https://es.stackoverflow.com/q/90027/127 //Un HTML de ejemplo $html = ' <a href="https://i.stack.imgur.com/mOJ0a.png"> <span>Enlace a la misma URL de la imagen</span> <img src="https://i.stack.imgur.com/mOJ0a.png" /> </a> <span>Imagen independiente precedida por un </span> <a href="https://i.stack.imgur.com/mOJ0a.png">enlace</a> <img src="https://i.stack.imgur.com/mOJ0a.png" /> <a href="./"> <span>Enlace a una URL diferente que la imagen</span> <img src="https://i.stack.imgur.com/mOJ0a.png" /> </a> '; //Englobamos en body $html = "<body>$html</body>"; //Generar el DOM $dom = new DOMDocument; $dom->loadHTML($html, LIBXML_COMPACT | LIBXML_HTML_NOIMPLIED | LIBXML_NONET | LIBXML_HTML_NODEFDTD); //Obtener todos los enlaces $a_nodelist = $dom->getElementsByTagName('a'); //Recorrer cada uno foreach ($a_nodelist as $enlace) { //Obtener la primera imagen dentro del enlace $img = $enlace->getElementsByTagName('img')->item(0); if ($img) { //si tiene imagen //Comparar el enlace con la imagen $urlEnlace = $enlace->getAttribute('href'); $urlImagen = $img->getAttribute('src'); if ($urlEnlace == $urlImagen) { //Si son el mismo, reemplazar $enlace->parentNode->replaceChild($img, $enlace); } } } //imprimir el resultado echo $dom->saveHTML();
Output for 7.0.0 - 7.0.20, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
<body> <img src="https://i.stack.imgur.com/mOJ0a.png"> <span>Imagen independiente precedida por un </span> <a href="https://i.stack.imgur.com/mOJ0a.png">enlace</a> <img src="https://i.stack.imgur.com/mOJ0a.png"> <a href="./"> <span>Enlace a una URL diferente que la imagen</span> <img src="https://i.stack.imgur.com/mOJ0a.png"> </a> </body>
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 <body> <img src="https://i.stack.imgur.com/mOJ0a.png"> <span>Imagen independiente precedida por un </span> <a href="https://i.stack.imgur.com/mOJ0a.png">enlace</a> <img src="https://i.stack.imgur.com/mOJ0a.png"> <a href="./"> <span>Enlace a una URL diferente que la imagen</span> <img src="https://i.stack.imgur.com/mOJ0a.png"> </a> </body>

preferences:
155.09 ms | 403 KiB | 187 Q