ccc

Extraer todas las imágenes de una cadena

function extraerSRC($cadena) {
        $arrImg = array();
        preg_match_all('/<img[^>]+>/i',$cadena, $imgTags);
        for ($i = 0; $i < count($imgTags[0]); $i++) {
            preg_match('/src="([^"]+)/i',$imgTags[0][$i], $imgage);
            $arrImg[] = str_ireplace( 'src="', '', $imgage[0]);
        }
return $arrImg;
}


Por ejemplo para cambiar todas las imágenes de una cadena a base64 sería:
function extraerSRC($cadena) {
        $foto = '';
        $arrImg = array();
        preg_match_all('/<img[^>]+>/i',$cadena, $imgTags);
        for ($i = 0; $i < count($imgTags[0]); $i++) {
            preg_match('/src="([^"]+)/i',$imgTags[0][$i], $imgage);
            $arrImg[] = str_ireplace( 'src="', '', $imgage[0]);
        }
        // convertir cada imagen a base64 y reemplazar
        foreach ($arrImg as $clave=>$valor) {
            $path = $valor;
            $type = pathinfo($path, PATHINFO_EXTENSION);
            // $data = file_get_contents($path);
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $path);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
            $data = curl_exec($ch);
            curl_close($ch);
            $ImgBase64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
            $cadena = str_replace($valor, $ImgBase64,$cadena);
        }
        return($cadena);
    }

No hay comentarios:

Publicar un comentario