Foros del Web » Programando para Internet » PHP »

Regex para extraer link de un img src.

Estas en el tema de Regex para extraer link de un img src. en el foro de PHP en Foros del Web. Buenos días compañeros, tengo codificada en php una función que lo que hace es decodificar el base64 de los img src que se encuentren dentro ...
  #1 (permalink)  
Antiguo 04/12/2011, 15:44
 
Fecha de Ingreso: agosto-2009
Mensajes: 91
Antigüedad: 14 años, 7 meses
Puntos: 2
Regex para extraer link de un img src.

Buenos días compañeros, tengo codificada en php una función que lo que hace es decodificar el base64 de los img src que se encuentren dentro de un archivo html. Aquí la tenéis:

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

Y muestro por pantalla el archivo html con los img src en base64 decodificados:

Código PHP:
echo preg_replace_callbak('#(<img[^>]+src=")data:image/(gif|png|jpeg);base64,([\w=+/]+)("[^>]*>)#'"data_to_img"$nuevohtml); 
El problema es que para img src de este tipo:

Código PHP:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEW/v7////+Zw/90AAAAEUlEQVQI12P4z8CAFWEX/Q8Afr8P8erzE9cAAAAASUVORK5CYII="
Funciona correctamente, pero para img src mas largos que son los que yo tengo no muestra nada por pantalla, así que creo que la expresión regular es la que esta mal construida. Os pongo un ejemplo de los links que tengo en mis img src:

Código PHP:
Ver original
  1. <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
  1. 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!! :)

Última edición por jurassicboy; 09/12/2011 a las 05:01

Etiquetas: html, img, link, regex
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:09.