Foros del Web » Programando para Internet » PHP »

Minar cadena de una consulta MySQL

Estas en el tema de Minar cadena de una consulta MySQL en el foro de PHP en Foros del Web. Buenas tardes, soy nuevo en el foro, tengo un problemita, el script que les pongo abajo me lo paso un amigo al cual ayudaron en ...
  #1 (permalink)  
Antiguo 24/05/2009, 13:53
(Desactivado)
 
Fecha de Ingreso: mayo-2009
Mensajes: 37
Antigüedad: 14 años, 11 meses
Puntos: 0
Minar cadena de una consulta MySQL

Buenas tardes, soy nuevo en el foro, tengo un problemita, el script que les pongo abajo me lo paso un amigo al cual ayudaron en este foro, bueno al grano, el problemas es que yo hago una consulta a una BD de la cual obtengo una cadena de texto, cadena de la cual necesito sacar el valor de "src", con este script me saca el valor de "src" pero me pone todo lo que esta despues de ella, no se como solucionarlo, les pongo el resultado:

El script me arroja esto:

172.16.193.172,src_port=53643,src_int="internal",d st=213.239.187.25,dst_port=80,dst_int="wan1",src_n ame="172.16.193.172",dst_name="213.239.187.25",ser vice="http",policyid=22,serial=1555334,app_list="n avegacionmessenger",app_type="N/A",app="Unknown Application",action=pass,count=1

Se supone que con este script solo me tendria q mostrar 172.16.193.172 no?


Código PHP:
<?php
require('basededatos.php');
  
$sql "SELECT seq,priority,msg FROM logs  WHERE seq =10";
    
    
$resultado mysql_query($sql); 
    
$mensaje mysql_fetch_row($resultado);
    
$cadena $mensaje[2];
    
    
$patron "/src=(.*)\,/";
    
preg_match $patron$cadena,$resultado );
    echo 
$resultado[1];
     
?>

El valor completo de $cadena es:

date=2009-04-23,time=12:38:34,devname=FWF60B3907519755,device_i d=FWF60B3907519755,log_id=1059116020,type=app-ctrl,subtype=app-ctrl-all,pri=alert,vd=root,fwver=040002,user="N/A",group="N/A",carrier_ep="N/A",kind=N/A,profile="navegacionmessenger",dir=N/A,proto=6,src=172.16.193.172,src_port=53643,src_in t="internal",dst=213.239.187.25,dst_port=80,dst_in t="wan1",src_name="172.16.193.172",dst_name="213.2 39.187.25",service="http",policyid=22,serial=15553 34,app_list="navegacionmessenger",app_type="N/A",app="Unknown Application",action=pass,count=1,msg=": Unknown Application"


Disculpen que ponga tanta letra pero me queria explicar lo mejor posible, por favor ayudenme, gracias.
  #2 (permalink)  
Antiguo 24/05/2009, 17:19
 
Fecha de Ingreso: febrero-2007
Mensajes: 309
Antigüedad: 17 años, 1 mes
Puntos: 16
Respuesta: Minar cadena de una consulta MySQL

Prueba con este patron:

/src=([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}),/
  #3 (permalink)  
Antiguo 24/05/2009, 17:20
 
Fecha de Ingreso: febrero-2007
Mensajes: 309
Antigüedad: 17 años, 1 mes
Puntos: 16
Respuesta: Minar cadena de una consulta MySQL

ahh y, ya que estoy te recomiendo el programa RegExBuddy para armar y probar expresiones regulares. Yo lo probé con ese. ;)

saludos!
  #4 (permalink)  
Antiguo 24/05/2009, 22:19
(Desactivado)
 
Fecha de Ingreso: mayo-2009
Mensajes: 37
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Minar cadena de una consulta MySQL

Muchas gracias, me funcionó perfecto, pero tengo una duda, como le hago si quiero obtener el valor de src_int= el cual es un valor que varia, no siempre va ser el mismo o no tiene la misma estructura como una IP, agradecería tu ayuda.
  #5 (permalink)  
Antiguo 24/05/2009, 23:05
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Minar cadena de una consulta MySQL

¿Todos los valores de src_int son texto?

Si es asi usa la misma expresion que te dio "quebien" pero modificandola de esta forma

/src_int=\"(\w*)\",/

Si no es asi debes hacer todas las posibilidades ejemplo

/src_int=("?(\w*)\")?|(\d*)?,/

El simbolo de | significa or asi que trata de hacer diferentes ejemplos
Prueba el programa que te dijo quebien, es muy bueno

Última edición por abimaelrc; 24/05/2009 a las 23:39
  #6 (permalink)  
Antiguo 24/05/2009, 23:47
(Desactivado)
 
Fecha de Ingreso: mayo-2009
Mensajes: 37
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Minar cadena de una consulta MySQL

No no todos son texto, bueno mejor te pongo algunos ejemplos de los valores que puede tener:

wan1,wan2,port1,port2,port3,internal,dmz, etcetera; aunque puede haber más valores que son asignados por un usuario el cual yo no controlo, por eso te digo que el valor que adquiere es variable; por eso segun yo la solución sería encontrando src_int y tomar como limite la siguiente coma (,) que este despues de este, y asi sacar el valor, solo que no se como llevarlo a cabo con php.
  #7 (permalink)  
Antiguo 24/05/2009, 23:49
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Minar cadena de una consulta MySQL

El \w recoge todo lo que estas mencionando usa entonces

/src_int=\"(\w*)\",/

Me dejas saber
  #8 (permalink)  
Antiguo 25/05/2009, 00:09
(Desactivado)
 
Fecha de Ingreso: mayo-2009
Mensajes: 37
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Minar cadena de una consulta MySQL

Genial, muchas muchas gracias, funcionó perfecto, y gracias también por la recomendación, ya descargue el SW, gracias por su ayuda.
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 21:01.