[preg_match_all] no se que hace esta linea

Iniciado por Frost, 5 Enero 2012, 15:06 PM

0 Miembros y 1 Visitante están viendo este tema.

Frost

En realidad no estoy seguro que es lo que hace esta linea, quien me puede explicar un poco

se está ocupando para buscar dentro de un .xml y hay algo que hace que falle en la lectura pero me topé con esta linea y no tengo claro lo que hace

$result=preg_match_all("/(<FORMULARIO>.*?<\/FORMULARIO>.*?)/s", $datos2, $archivos);



segun php.net "preg_match_all — Realiza una comparación global de una expresión regular"

la parte que no comprendo es la expresión regular

saludos

Etex

Te lo explico para que lo entiendas:

Sirve para buscar valores con condiciones que cumpla el string.
En ese caso, busca valores que esten entre las etiquetas "Formulario" del XML

Deberias leer algun tutorial de expresion regulares para que las entiendas mejor.

http://www.manualdephp.com/codigos-php/expresiones-regulares-php.html

Hay varios muy buenos

Saludos

Frost

ok gracias

"El punto . como metacaracter" entiendo entonces que efectivamente esta buscando todo lo que se encuentre entre <FORMULARIO></FORMULARIO>

pero que pasa con *?

Citar*   ==>El asterisco indica que el carácter que lo precede puede aparecer cero, una, o más veces. Por ejemplo, "0*42" casa con 42, 042, 0042, 00042, etcétera.


?  ==> El signo de interrogación indica que el carácter al que sigue puede aparecer como mucho una vez. Por ejemplo, "ob?scuro" casa con oscuro y obscuro

saludos

Etex

El * quiere decir puede haber 0 o mas caracteres del . (cualquier caracter). Es decir si solo pongo . (punto) solo seria un caracter, pero si pongo .* seria de 0 a mas caracteres.

Espero que no te haya mezclado.

Saludos

‭lipman

Y porqué aparece el interrogante seguido del asterisco?

#!drvy

Hola

el *? significa, 0 o mas pero ungreedy.

Si la expresión es greedy (sin el ?), esta consumirá todos los caracteres (comprobara todo) antes de finalizar.
Si es ungreedy (con el ?) (equivalente a {0,1}), esta consumirá lo menos posible.

La explicación aquí en ingles:
http://www.skdevelopment.com/php-regular-expressions.php

Os recomiendo este cheetsheet sobre expresiones regulares:
http://www.addedbytes.com/cheat-sheets/download/regular-expressions-cheat-sheet-v2.png

Saludos

Frost


~ Yoya ~

Te recomiendo esta pagina para testear las expresiones regulares:

http://regex.larsolavtorvik.com/

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.