0 votos

Tengo una expresion regular dento de una funcion HulkMatch($string) , ya comprobe que funciona en un texto normal .txr pero al pasarlo a  mi sistema mediante $html = file_get_contents($url); $encontrados = HulKMatch($html); el arreglo queda vacio es decir no envuentra nada...

esta es la funcion.... enceuntra todos los archivos de audio (.mp3.o .mwa) dentro de las etiquetas <a></a> y <embed><> dentro de un archivo html. No esta arrogando absolutamente nada al arreglo.

 

function HulKMatch($string) {
    $pattern = "#((<.*?a.*?(.*?\=.+(\.mp3|\.wma).+)<\/a>)|(<.*?embed.*?(.*?\=.+(\.mp3|\.wma).*?>)))#";

    preg_match_all($pattern, $string, $matches);
    
    return $matches[1];
}

// Contolador..

$path = ruta_archivo($file, $file_name);

$url = storage_path('app/').$file;

$html = file_get_contents($url);

$encontrados = HulKMatch($html);     // no encuentra nada

if ($encontrados) {
    print "<pre>"; print_r($encontrados); print "</pre>\n";
} else {
    print "<p>No se han encontrado coincidencias.</p>\n";
}

 

por en PHP

1 Respuesta

0 votos

¿Has probado si en $html está llegando algo?

Si es un HTML puede que te sobren las almohadillas # de apertura y cierre:

$pattern = "((<.*?a.*?(.*?\=.+(\.mp3|\.wma).+)<\/a>)|(<.*?embed.*?(.*?\=.+(\.mp3|\.wma).*?>)))";

Si no es esto, pega un ejemplo de lo que debería reconocer para verlo mejor.

por