Foros del Web » Programando para Internet » PHP »

Problema para obtener un dato entre parentesis con expresiones regulares

Estas en el tema de Problema para obtener un dato entre parentesis con expresiones regulares en el foro de PHP en Foros del Web. Hola a todos, Tengo un problema con las expresiones regulares, sobre este tema no tengo mucha idea, pero siempre he salido de los problemas. Mi ...
  #1 (permalink)  
Antiguo 04/09/2010, 08:50
 
Fecha de Ingreso: abril-2008
Mensajes: 12
Antigüedad: 16 años, 7 meses
Puntos: 0
Exclamación Problema para obtener un dato entre parentesis con expresiones regulares

Hola a todos,

Tengo un problema con las expresiones regulares, sobre este tema no tengo mucha idea, pero siempre he salido de los problemas. Mi caso es este, tengo el siguiente código:

Código PHP:
$valor"http://www.mediafire.com/?32xlxbk7mt87kq5";
$source = @file_get_contents($valor) or exit('Se ha producido un Error!');
preg_match_all("/<div class=\"download_file_title\" [^\(]*\((.*?)\)<\/div>/"$source$sizePREG_SET_ORDER);

print 
"<pre>";
print_r($size);
print 
"</pre>\n"
Lo que quiero capturar es el tamaño de un archivo subido a mediafire. El problema esta que no puedo capturarlo fácilmente, porque no esta entre etiquetas únicas o definidas por alguna clase. Este es la parte del código html que me interesa:

Código HTML:
<div class="download_file_title" style="margin-bottom: 20px;"> Dolce Dj - Summer Session Delux 3 (2010).rar <div style="font-size: 14px; padding-top: 12px; color: rgb(119, 119, 119);">(88.49 MB)</div></div> 
La cosa se complica porque el titulo tiene paréntesis. Si pongo esta expresión: /<div class=\"download_file_title\" [^\(]*\((.*?)\)/ Cogería lo que hay dentro del primer paréntesis, es decir el 2010. Pero no me interesa eso, y no siempre va ha tener dos paréntesis. Lo que quiero obtener es el 88.49 MB.

Haber si alguien me puede ayudar con esto. Gracias
  #2 (permalink)  
Antiguo 04/09/2010, 08:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problema para obtener un dato entre parentesis con expresiones regulares

entonces la expresión debería capturar solo dígitos... [0-9.]+ y no "todo" .*?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 04/09/2010, 09:09
 
Fecha de Ingreso: abril-2008
Mensajes: 12
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Problema para obtener un dato entre parentesis con expresiones regulares

Cita:
Iniciado por pateketrueke Ver Mensaje
entonces la expresión debería capturar solo dígitos... [0-9.]+ y no "todo" .*?
Ok, no se que hago mal pero no me mete nada en el array:

/<div class=\"download_file_title\" [^\(]*\([0-9.]+\)<\/div>/

Esto esta bien???

Pero una cosa, ten en cuenta, que (2010), también esta entre paréntesis y es un numero, estaría en las mismas.

Se te ocurre otra forma¿?
  #4 (permalink)  
Antiguo 04/09/2010, 09:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problema para obtener un dato entre parentesis con expresiones regulares

podría ser así...
/\([0-9.]+\)\s*<\/div/

pero finalmente es igual a la tuya, solo date cuenta que los paréntesis están antes del cierre del <div/>... el otro numero esta seguido de una extensión, por lo tanto la expresión no se equivocaría...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 04/09/2010, 09:35
 
Fecha de Ingreso: abril-2008
Mensajes: 12
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Problema para obtener un dato entre parentesis con expresiones regulares

Cita:
Iniciado por pateketrueke Ver Mensaje
podría ser así...
/\([0-9.]+\)\s*<\/div/

pero finalmente es igual a la tuya, solo date cuenta que los paréntesis están antes del cierre del <div/>... el otro numero esta seguido de una extensión, por lo tanto la expresión no se equivocaría...

Pues no se que hago, sigue sin meterme nada en el array

Código PHP:
$valor"http://www.mediafire.com/?32xlxbk7mt87kq5";
$source = @file_get_contents($valor) or exit('Se ha producido un Error!');

preg_match_all("/\([0-9.]+\)\s*<\/div/"$source$sizePREG_SET_ORDER);
    
print 
"<pre>"
print_r($size); 
print 
"</pre>\n"
  #6 (permalink)  
Antiguo 04/09/2010, 10:12
 
Fecha de Ingreso: abril-2008
Mensajes: 12
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Problema para obtener un dato entre parentesis con expresiones regulares

SOLUCIONADO

Ya encontre una solucion para el problema:

Código PHP:
$valor"http://www.mediafire.com/?32xlxbk7mt87kq5";

$source = @file_get_contents($valor) or exit('Se ha producido un Error!');

preg_match_all("/\([0-9.]+ MB\)\s*<\/div/"$source$sizePREG_SET_ORDER);
preg_match_all("/[0-9.]+ MB/"$size[0][0], $size2PREG_SET_ORDER);

print 
"<pre>"
print_r($size2); 
print 
"</pre>\n"
Se nos olvidaba poner MB para que entrara la cadena. Pero de esa forma me quedaba (88.49 MB) y yo no quería los perentesis. Por eso realizo otra búsqueda para quitar los paréntesis. No se si se podrá hacer directamente en la misma expresión, pero de esta forma me sirve.

Gracias por la ayuda.

Etiquetas: expresiones, regulares
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 14:10.