Código PHP:
$nuevohtml = file_get_contents('nuevohtml.html');
function data_to_img($match) {
list(, $img, $type, $base64, $end) = $match;
$bin = base64_decode($base64);
$md5 = md5($bin); // generate a new temporary filename
$fn = "$md5.$type";
file_exists($fn) or file_put_contents($fn, $bin);
return "$img$fn$end"; // new <img> tag
}
Código PHP:
echo preg_replace_callbak('#(<img[^>]+src=")data:image/(gif|png|jpeg);base64,([\w=+/]+)("[^>]*>)#', "data_to_img", $nuevohtml);
Código PHP:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEW/v7////+Zw/90AAAAEUlEQVQI12P4z8CAFWEX/Q8Afr8P8erzE9cAAAAASUVORK5CYII=">
Código PHP:
Ver original
<img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLAAAAMeCAIAAACC8mqIAAAgAElEQVR4nHy9Z3cj17Wu659x97YldSKJnAESGSCYyc65mZArVyEDlRMymDtLsiVvBzlI6m4le59fdz/MQhGSfM4Yz+AogEUSRCDWs945J3+zdf+/t+//986D/7rz8Ld37v83cO/h7+4++t3dR7+7/djg1qPf3n78u7tPP.....
Como véis el src codificado en base64 continúa y es larguísimo, con lo que me iría genial conseguir decodificarlo como lo estoy haciendo. A ver si alguien que tenga mas idea de expresiones regulares que yo puede echarme un cable.
Muchas gracias a todos.
EDITO: Lo tengo!!
Código PHP:
Ver original
echo preg_replace_callback('#(<img\s(?>(?!src=)[^>])*?src=")data:image/(gif|png|jpeg);base64,([\w=+/]++)("[^>]*>)#', "data_to_img", $nuevohtml);
Gracias a todos los que se molestaron en leerme!! :)