🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#1737
Author: Rickoj
Date: Tue, 06 Jun 2006 21:20
16 lines
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
#1739
Author: Jos� Miguel Santib��ez
Date: Tue, 06 Jun 2006 21:00
86 lines
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
#1738
Author: Cristian Gutierrez
Date: Tue, 06 Jun 2006 21:46
38 lines
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
#1740
Author: Rickoj
Date: Tue, 06 Jun 2006 23:47
91 lines
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
#1741
Author: Rickoj
Date: Tue, 06 Jun 2006 23:48
47 lines
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
#1742
Author: Rickoj
Date: Wed, 07 Jun 2006 01:12
37 lines
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
#1743
Author: Cristian Gutierrez
Date: Wed, 07 Jun 2006 03:31
28 lines
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
#1745
Author: Rickoj
Date: Wed, 07 Jun 2006 14:26
39 lines
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
#1747
Author: Cristian Gutierrez
Date: Wed, 07 Jun 2006 16:35
39 lines
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
#1761
Author: Rickoj
Date: Fri, 09 Jun 2006 20:07
40 lines
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