Article View: chile.comp.programacion
Article #1739Re: consulta php preg_match y tipos de variables
From: 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>
Technical Details
Message-ID:
<Xns97DAB7483CA9Fjmsnews@200.27.221.71>Path:
arc1-ca.pugleaf.net!g2news2.google.com!news3.google.com!news.glorb.com!nntp-server.pubsub.com!news.nivel5.cl!news.vcd.cl!not-for-mail!not-for-mailReferences:
<e64rlm$9kc$1@news.nivel5.cl>Show Full Headers
Complete Article Headers
X-Google-Thread: 1593cb,5ee13cd680b85cc4
X-Google-Attributes: gid1593cb,public
X-Google-Language: SPANISH,ASCII
Newsgroups: chile.comp.programacion
Subject: Re: consulta php preg_match y tipos de variables
From: "Jos� Miguel Santib��ez" <jms.nospam@nivel5.cl>
References: <e64rlm$9kc$1@news.nivel5.cl>
Organization: Caos Consultores
Message-ID: <Xns97DAB7483CA9Fjmsnews@200.27.221.71>
User-Agent: Xnews/5.04.25
X-Face: +|NgjgFM{<rs%\Q|vUu16]a6,}?MJTA<!PEEI+x&Gw-Gyq+?$}fvo+.(,-r;)~Qzn)#{{nxU,OT?w^s<7m4ckCJ*L$c#I)yHL7b)GdU*#l
NNTP-Posting-Host: 230-38-246-201.adsl.terra.cl
X-Original-NNTP-Posting-Host: 230-38-246-201.adsl.terra.cl
Date: 6 Jun 2006 17:00:50 -0400
X-Trace: news.vcd.cl!not-for-mail 1149627650 201.246.38.230 (6 Jun 2006 17:00:50 -0400)
X-Original-Trace: 6 Jun 2006 17:00:50 -0400, 230-38-246-201.adsl.terra.cl
Lines: 86
X-Authenticated-User: jms
Path: arc1-ca.pugleaf.net!g2news2.google.com!news3.google.com!news.glorb.com!nntp-server.pubsub.com!news.nivel5.cl!news.vcd.cl!not-for-mail!not-for-mail