🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: chile.comp.programacion
Article #1739

Re: consulta php preg_match y tipos de variables

#1739
From: 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>
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-mail
References: <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