Thread View: chile.comp.programacion
10 messages
10 total messages
Started by Rickoj
Tue, 06 Jun 2006 21:20
consulta php preg_match y tipos de variables
Author: Rickoj
Date: Tue, 06 Jun 2006 21:20
Date: Tue, 06 Jun 2006 21:20
16 lines
1660 bytes
1660 bytes
bueno necesito obtener unos datos de un log, buscando en phpclasses.org
encontre "Apace log parser", mire el archivo con el fin de saar una idea y
encontre que utiliza la funcion preg_match verifica un patron y si
corresponde lo almacena en un arreglo, la funcion recibe estos parametros
preg_match("/^(\S+) (\S+) (\S+) \[([^:]+):(\d+:\d+:\d+) ([^\]]+)\] \"(\S+)
(.*?) (\S+)\" (\S+) (\S+) (\".*?\") (\".*?\")$/", $matches);
mi duda es que no entiendo que es \S+ (asumo string) \d+
alguien me podria explicar se supone que parse el log de apaxhe que es del
tipo
172.0.0.1 - - [21/Sep/2005:23:06:41 +0100] "GET / HTTP/1.1" 404 - "-"
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b3) Gecko/20050712
Firefox/1.0+"
Re: consulta php preg_match y tipos de variables
Author: Jos� Miguel Santib��ez
Date: Tue, 06 Jun 2006 21:00
Date: Tue, 06 Jun 2006 21:00
86 lines
3665 bytes
3665 bytes
En el cap�tulo anterior (news:e64rlm$9kc$1@news.nivel5.cl), "Rick_oj"
<rick_oj@[sin-esto]tutopia.com> dijo:
> bueno necesito obtener unos datos de un log, buscando en
> phpclasses.org encontre "Apace log parser", mire el archivo con el fin
> de saar una idea y encontre que utiliza la funcion preg_match verifica
> un patron y si corresponde lo almacena en un arreglo, la funcion
> recibe estos parametros
>
> preg_match("/^(\S+) (\S+) (\S+) \[([^:]+):(\d+:\d+:\d+) ([^\]]+)\]
> \"(\S+) (.*?) (\S+)\" (\S+) (\S+) (\".*?\") (\".*?\")$/", $matches);
>
> mi duda es que no entiendo que es \S+ (asumo string) \d+
\S es cualquier caracter que no sea un espacio en blanco (espacio, tab)
as� el patr�n se lee m�s o menos as�:
^: inicio de la l�nea:
(\S+) uno o m�s caracteres que no sean espacio. (y se guardan)
un espacio
(\S+) uno o m�s caracteres que no sean espacio. (y se guardan)
un espacio
(\S+) uno o m�s caracteres que no sean espacio. (y se guardan)
un espacio
\[ un [
([^:]+) uno o m�s caracteres cualquiera que no sean dos puntos.
(y se guardan)
: un :
(\d+:\d+:\d+) tres n�meros separados por dos puntos y se guardan
un espacio
([^\]]+) uno o m�s caracteres diferentes de ] (y se guardan)
\] un ]
un espacio
\" un "
(\S+) idem antes.
un espacio
(.*?) Aqu� me maree con el "?", antes que eso es cualquier caracter, 0 o
m�s veces
un espacio
(\S+) idem antes
\" un "
un espacio
(\S+) idem
un espacio
(\S+) idem
un espacio
(\".*?\") cualquier cosa entre "
un espacio
(\".*?\") idem
$ fin de l�nea
(nota: me salt� los espacios)
Entonces:
172.0.0.1 primer match (\S+)
- segundo (\S+)
- tercero (\S+)
[
21/Sep/2005 cuarto ([^:]+)
23:06:41 quinto (\d+:\d+:\d+)
+0100 sexto ([^\]]+)
]
"
GET septimo (\S+)
/ octavo (.*?)
HTTP/1.1 noveno (\S+)
"
404 decimo (\S+)
- undecimo (\S+)
"-" duod�cimo (\".*?\")
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b3) Gecko/20050712
Firefox/1.0+" decimotercer (\".*?\")
y fin de l�nea... Aunque me salt� los espacios
Alguien podr�a aclarar mejor el (.*?) no recuerdo la diferencia que produce
el "?"
eso...
--
Jose M. Santiba�ez A.
<jms@nivel5.cl>
<http://caos.cl/jms>
Re: consulta php preg_match y tipos de variables
Author: Cristian Gutierrez
Date: Tue, 06 Jun 2006 21:46
Date: Tue, 06 Jun 2006 21:46
38 lines
2416 bytes
2416 bytes
Hoy en la tarde, Rick oj dijo:
> bueno necesito obtener unos datos de un log, buscando en phpclasses.org
> encontre "Apace log parser", mire el archivo con el fin de saar una idea y
> encontre que utiliza la funcion preg_match verifica un patron y si
> corresponde lo almacena en un arreglo, la funcion recibe estos parametros
>
> preg_match("/^(\S+) (\S+) (\S+) \[([^:]+):(\d+:\d+:\d+) ([^\]]+)\] \"(\S+)
> (.*?) (\S+)\" (\S+) (\S+) (\".*?\") (\".*?\")$/", $matches);
>
> mi duda es que no entiendo que es \S+ (asumo string) \d+
\s == caracter "whitespace" (blancos, tabs)
\S == caracter NO whitespace (alfanumericos, puntuacion, etc)
algo+ == algo una o mas veces
==> \S+ == uno o mas caracteres NO blancos NI tabs
Mas info en <http://www.php.net/manual/en/reference.pcre.pattern.syntax.php>.
> alguien me podria explicar se supone que parse el log de apaxhe que es del
> tipo
>
> 172.0.0.1 - - [21/Sep/2005:23:06:41 +0100] "GET / HTTP/1.1" 404 - "-"
> "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b3) Gecko/20050712
> Firefox/1.0+"
Es el "Common Log Format". Mas info en
<http://httpd.apache.org/docs/1.3/logs.html#common>.
Probablemente te convenga usar la interfaz de esa clase PHP que
conseguiste (o incluso Apache::ParseLog si puedes ocupar Perl) en vez de
repetir el parsing con codigo propio.
Salu2,
--
Guti
BTW, FWIW, IMHO, AFAIK, yes. OTOH, AAMOF, maybe not. YMMV.
Re: consulta php preg_match y tipos de variables
Author: Rickoj
Date: Tue, 06 Jun 2006 23:47
Date: Tue, 06 Jun 2006 23:47
91 lines
3908 bytes
3908 bytes
"Jos� Miguel Santib��ez" <jms.nospam@nivel5.cl> escribi� en el mensaje
news:Xns97DAB7483CA9Fjmsnews@200.27.221.71...
> En el cap�tulo anterior (news:e64rlm$9kc$1@news.nivel5.cl), "Rick_oj"
> <rick_oj@[sin-esto]tutopia.com> dijo:
>
>> bueno necesito obtener unos datos de un log, buscando en
>> phpclasses.org encontre "Apace log parser", mire el archivo con el fin
>> de saar una idea y encontre que utiliza la funcion preg_match verifica
>> un patron y si corresponde lo almacena en un arreglo, la funcion
>> recibe estos parametros
>>
>> preg_match("/^(\S+) (\S+) (\S+) \[([^:]+):(\d+:\d+:\d+) ([^\]]+)\]
>> \"(\S+) (.*?) (\S+)\" (\S+) (\S+) (\".*?\") (\".*?\")$/", $matches);
>>
>> mi duda es que no entiendo que es \S+ (asumo string) \d+
>
> \S es cualquier caracter que no sea un espacio en blanco (espacio, tab)
>
> as� el patr�n se lee m�s o menos as�:
> ^: inicio de la l�nea:
> (\S+) uno o m�s caracteres que no sean espacio. (y se guardan)
> un espacio
> (\S+) uno o m�s caracteres que no sean espacio. (y se guardan)
> un espacio
> (\S+) uno o m�s caracteres que no sean espacio. (y se guardan)
> un espacio
> \[ un [
> ([^:]+) uno o m�s caracteres cualquiera que no sean dos puntos.
> (y se guardan)
> : un :
> (\d+:\d+:\d+) tres n�meros separados por dos puntos y se guardan
> un espacio
> ([^\]]+) uno o m�s caracteres diferentes de ] (y se guardan)
> \] un ]
> un espacio
> \" un "
> (\S+) idem antes.
> un espacio
> (.*?) Aqu� me maree con el "?", antes que eso es cualquier caracter, 0 o
> m�s veces
> un espacio
> (\S+) idem antes
> \" un "
> un espacio
> (\S+) idem
> un espacio
> (\S+) idem
> un espacio
> (\".*?\") cualquier cosa entre "
> un espacio
> (\".*?\") idem
> $ fin de l�nea
>
> (nota: me salt� los espacios)
>
> Entonces:
>
> 172.0.0.1 primer match (\S+)
> - segundo (\S+)
> - tercero (\S+)
> [
> 21/Sep/2005 cuarto ([^:]+)
> 23:06:41 quinto (\d+:\d+:\d+)
> +0100 sexto ([^\]]+)
> ]
> "
> GET septimo (\S+)
> / octavo (.*?)
> HTTP/1.1 noveno (\S+)
> "
> 404 decimo (\S+)
> - undecimo (\S+)
> "-" duod�cimo (\".*?\")
> "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b3) Gecko/20050712
> Firefox/1.0+" decimotercer (\".*?\")
>
> y fin de l�nea... Aunque me salt� los espacios
>
>
> Alguien podr�a aclarar mejor el (.*?) no recuerdo la diferencia que
> produce
> el "?"
>
> eso...
grande te pasaste
> Jose M. Santiba�ez A.
> <jms@nivel5.cl>
> <http://caos.cl/jms>
Re: consulta php preg_match y tipos de variables
Author: Rickoj
Date: Tue, 06 Jun 2006 23:48
Date: Tue, 06 Jun 2006 23:48
47 lines
2776 bytes
2776 bytes
"Cristian Gutierrez" <crgutier@dcc.uchile.cl> escribi� en el mensaje
news:87pshm2c0q.fsf@guti.cl...
> Hoy en la tarde, Rick oj dijo:
>> bueno necesito obtener unos datos de un log, buscando en phpclasses.org
>> encontre "Apace log parser", mire el archivo con el fin de saar una idea
>> y
>> encontre que utiliza la funcion preg_match verifica un patron y si
>> corresponde lo almacena en un arreglo, la funcion recibe estos parametros
>>
>> preg_match("/^(\S+) (\S+) (\S+) \[([^:]+):(\d+:\d+:\d+) ([^\]]+)\]
>> \"(\S+)
>> (.*?) (\S+)\" (\S+) (\S+) (\".*?\") (\".*?\")$/", $matches);
>>
>> mi duda es que no entiendo que es \S+ (asumo string) \d+
>
> \s == caracter "whitespace" (blancos, tabs)
> \S == caracter NO whitespace (alfanumericos, puntuacion, etc)
> algo+ == algo una o mas veces
>
> ==> \S+ == uno o mas caracteres NO blancos NI tabs
>
> Mas info en
> <http://www.php.net/manual/en/reference.pcre.pattern.syntax.php>.
esta era la que buscaba gracias, no la encontre en el manual o no sabia por
que buscar
>
>> alguien me podria explicar se supone que parse el log de apaxhe que es
>> del
>> tipo
>>
>> 172.0.0.1 - - [21/Sep/2005:23:06:41 +0100] "GET / HTTP/1.1" 404 - "-"
>> "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b3) Gecko/20050712
>> Firefox/1.0+"
>
> Es el "Common Log Format". Mas info en
> <http://httpd.apache.org/docs/1.3/logs.html#common>.
>
> Probablemente te convenga usar la interfaz de esa clase PHP que
> conseguiste (o incluso Apache::ParseLog si puedes ocupar Perl) en vez de
> repetir el parsing con codigo propio.
tendria que ver, mi idea es usar php o shell script unix
no se si hay soporte perl en el servidor aunque deberia haberlo, pero la
idea es hacerlo si que me iria por php o shell
Re: consulta php preg_match y tipos de variables
Author: Rickoj
Date: Wed, 07 Jun 2006 01:12
Date: Wed, 07 Jun 2006 01:12
37 lines
2323 bytes
2323 bytes
"Rick_oj" <rick_oj@[sin-esto]tutopia.com> escribi� en el mensaje
news:e64rlm$9kc$1@news.nivel5.cl...
> bueno necesito obtener unos datos de un log, buscando en phpclasses.org
> encontre "Apace log parser", mire el archivo con el fin de saar una idea y
> encontre que utiliza la funcion preg_match verifica un patron y si
> corresponde lo almacena en un arreglo, la funcion recibe estos parametros
>
> preg_match("/^(\S+) (\S+) (\S+) \[([^:]+):(\d+:\d+:\d+) ([^\]]+)\] \"(\S+)
> (.*?) (\S+)\" (\S+) (\S+) (\".*?\") (\".*?\")$/", $matches);
>
> mi duda es que no entiendo que es \S+ (asumo string) \d+
>
> alguien me podria explicar se supone que parse el log de apaxhe que es del
> tipo
>
> 172.0.0.1 - - [21/Sep/2005:23:06:41 +0100] "GET / HTTP/1.1" 404 - "-"
> "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b3) Gecko/20050712
> Firefox/1.0+"
>
estoy haciendo unas pruebas con preg_match pero solo me muestra la primera
coincidencia, es asi la funcion o tengo algo mal
un script simple de prueba de la paina de funciones de php
<?
$subject = "PHP es el lenguaje de scripting web de moda. Este es una prueba
en php";
$pattern = "/php/i";
preg_match($pattern, substr($subject,0),$matches);
print_r($matches);
?>
solamente me muestra el que esta con mayusculas es decir la primera
coincidencia
Re: consulta php preg_match y tipos de variables
Author: Cristian Gutierrez
Date: Wed, 07 Jun 2006 03:31
Date: Wed, 07 Jun 2006 03:31
28 lines
1831 bytes
1831 bytes
Hoy en la noche, Rick oj dijo: [...] > estoy haciendo unas pruebas con preg_match pero solo me muestra la primera > coincidencia, es asi la funcion o tengo algo mal > un script simple de prueba de la paina de funciones de php > > <? > $subject = "PHP es el lenguaje de scripting web de moda. Este es una prueba > en php"; > $pattern = "/php/i"; > preg_match($pattern, substr($subject,0),$matches); > print_r($matches); > ?> > > solamente me muestra el que esta con mayusculas es decir la primera > coincidencia Te falta el modificador "g", que calza todas las veces que aparezca la expresion regular en la linea. La cosa quedaria entonces asi: "/php/ig". PS: Y segun he visto, lo que esta "de moda" ahora es Ruby ;-) -- Guti "What goes up must come down. Ask any system administrator." -- Anon.
Re: consulta php preg_match y tipos de variables
Author: Rickoj
Date: Wed, 07 Jun 2006 14:26
Date: Wed, 07 Jun 2006 14:26
39 lines
2114 bytes
2114 bytes
"Cristian Gutierrez" <crgutier@dcc.uchile.cl> escribi� en el mensaje news:87y7w9tzen.fsf@guti.cl... > Hoy en la noche, Rick oj dijo: > > [...] > >> estoy haciendo unas pruebas con preg_match pero solo me muestra la >> primera >> coincidencia, es asi la funcion o tengo algo mal >> un script simple de prueba de la paina de funciones de php >> >> <? >> $subject = "PHP es el lenguaje de scripting web de moda. Este es una >> prueba >> en php"; >> $pattern = "/php/i"; >> preg_match($pattern, substr($subject,0),$matches); >> print_r($matches); >> ?> >> >> solamente me muestra el que esta con mayusculas es decir la primera >> coincidencia > > Te falta el modificador "g", que calza todas las veces que aparezca la > expresion regular en la linea. La cosa quedaria entonces asi: "/php/ig". gracias bueno tratare de buscar un manual mejor, ya que el de php.net no me indica muchas opciones de parametros, > > > PS: Y segun he visto, lo que esta "de moda" ahora es Ruby ;-) lol > -- > Guti > "What goes up must come down. Ask any system administrator." -- Anon.
Re: consulta php preg_match y tipos de variables
Author: Cristian Gutierrez
Date: Wed, 07 Jun 2006 16:35
Date: Wed, 07 Jun 2006 16:35
39 lines
2290 bytes
2290 bytes
Hoy en la ma~nana, Rick oj dijo: > Cristian Gutierrez dijo: >> Hoy en la noche, Rick oj dijo: [...] >>> <? >>> $subject = "PHP es el lenguaje de scripting web de moda. Este es una >>> prueba >>> en php"; >>> $pattern = "/php/i"; >>> preg_match($pattern, substr($subject,0),$matches); >>> print_r($matches); >>> ?> >>> >>> solamente me muestra el que esta con mayusculas es decir la primera >>> coincidencia >> >> Te falta el modificador "g", que calza todas las veces que aparezca la >> expresion regular en la linea. La cosa quedaria entonces asi: "/php/ig". > > gracias bueno tratare de buscar un manual mejor, ya que el de php.net no me > indica muchas opciones > de parametros, Me retracto. Eso fue una extrapolacion de los modificadores disponibles en Perl, pero por lo visto no esta en la lista de los soportados por PHP (ver <http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php>). El equivalente al modificador `/g' esta disponible en (para variar) otra funcion, `preg_match_all' (<http://www.php.net/manual/en/function.preg-match-all.php>). -- Guti 117 documents match your query. Search Amazon.com for top-selling titles about +dwarf +"pubic hair". -- AltaVista
Re: consulta php preg_match y tipos de variables
Author: Rickoj
Date: Fri, 09 Jun 2006 20:07
Date: Fri, 09 Jun 2006 20:07
40 lines
2328 bytes
2328 bytes
"Cristian Gutierrez" <crgutier@dcc.uchile.cl> escribi� en el mensaje news:87fyig9b51.fsf@guti.cl... > Hoy en la ma~nana, Rick oj dijo: >> Cristian Gutierrez dijo: >>> Hoy en la noche, Rick oj dijo: > > [...] > >>>> <? >>>> $subject = "PHP es el lenguaje de scripting web de moda. Este es una >>>> prueba >>>> en php"; >>>> $pattern = "/php/i"; >>>> preg_match($pattern, substr($subject,0),$matches); >>>> print_r($matches); >>>> ?> >>>> >>>> solamente me muestra el que esta con mayusculas es decir la primera >>>> coincidencia >>> >>> Te falta el modificador "g", que calza todas las veces que aparezca la >>> expresion regular en la linea. La cosa quedaria entonces asi: "/php/ig". >> >> gracias bueno tratare de buscar un manual mejor, ya que el de php.net no >> me >> indica muchas opciones >> de parametros, > > Me retracto. Eso fue una extrapolacion de los modificadores disponibles > en Perl, pero por lo visto no esta en la lista de los soportados por > PHP (ver > <http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php>). > > El equivalente al modificador `/g' esta disponible en (para variar) otra > funcion, `preg_match_all' > (<http://www.php.net/manual/en/function.preg-match-all.php>). > gracias
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads