Título: [preg_match_all] no se que hace esta linea Publicado por: Frost en 5 Enero 2012, 15:06 pm 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 Código: $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 Título: Re: [preg_match_all] no se que hace esta linea Publicado por: Etex en 5 Enero 2012, 15:25 pm 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. Código: http://www.manualdephp.com/codigos-php/expresiones-regulares-php.html Hay varios muy buenos Saludos Título: Re: [preg_match_all] no se que hace esta linea Publicado por: Frost en 5 Enero 2012, 15:46 pm 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 Título: Re: [preg_match_all] no se que hace esta linea Publicado por: Etex en 5 Enero 2012, 16:07 pm 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 Título: Re: [preg_match_all] no se que hace esta linea Publicado por: lipman en 5 Enero 2012, 16:37 pm Y porqué aparece el interrogante seguido del asterisco?
Título: Re: [preg_match_all] no se que hace esta linea Publicado por: #!drvy en 5 Enero 2012, 17:45 pm 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: Código: http://www.skdevelopment.com/php-regular-expressions.php Os recomiendo este cheetsheet sobre expresiones regulares: Código: http://www.addedbytes.com/cheat-sheets/download/regular-expressions-cheat-sheet-v2.png Saludos Título: Re: [preg_match_all] no se que hace esta linea Publicado por: Frost en 5 Enero 2012, 19:37 pm ok gracias voy a revisar esto
saludos Título: Re: [preg_match_all] no se que hace esta linea Publicado por: ~ Yoya ~ en 7 Enero 2012, 05:45 am Te recomiendo esta pagina para testear las expresiones regulares:
http://regex.larsolavtorvik.com/ Saludos. |