Autor
|
Tema: Problema con expresión regular (Leído 5,990 veces)
|
egyware
|
Hola a todos estoy haciendo una expresion regular que no me funciona bien del todo esta es $expresion = '/\/(.*?)#/';
Esta es la expresión, (buscando en internet logre hacer esta expresion regular) que extrae el contenido /algo# pero al combinarlo con otras expresiones regulares como BBCode me detecta otras cosas que no debe ser como el cierre de un tag html mi duda es que si me pueden decir como NO incluir el ']', '>' y el espacio ya que me causa varios problemas Saludos gracias por su tiempo
|
|
|
En línea
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
Ok, no entendi muy bien, escribe lo que quieres sacar en un :
|
|
|
En línea
|
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.
|
|
|
egyware
|
Este es el texto por ejemplo Deberia usando las las expresiones regulares quedar algo asi Hola <strong>Mundo</strong> <img src="omg.gif" /> Pero con el actual codigo que tengo me sale algo asi Hola [b]Mundo[<img src="b] /omg.gif"> Bueno no entendi ese "aqui" asi que puse un ejemplo, mi idea es que mi expresion regular no tome en cuenta ni el espacio ni el ] o > Gracias Saludos
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Mis problemas favoritos Bueno, a tu parecer solo queres capturar valores alfanumericos? (numeros y letras) entonces es \w Si NO queres aceptar ciertos valores, se hace con un ^ al principio del corchete, ej: [^....] Entonces te quedaria: $expresion = '/\/(\w*)?#/'; o sino $expresion = '/\/([^\s\[\]...]*)?#/'; (Ojo, todo esto lo hice al aire, no lo probe, de todas formas deberias probar "en masa" Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.Ahh..entonces lo que te doy no te resuelve el problema: Solo una pregunta, si yo pongo esto Con la expresion regular me deberia salir esto? (o capturar esto):
|
|
|
En línea
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
Ya se lo que quieres hacer, es como un BBCODE, bueno aqui lo que pediste. <?php function bbcode($text){ return $text; } echo bbcode('[b]Hola como estan[/b]'); echo bbcode('[img]http://www.grupogenova.net/Moncan/V20/imgs/upload/gato.jpg[/img]'); ?>
Salida: En este caso, el problema no necesita de expresiones regulares para resolverlo, porque no buscas parametros, si no una palabra en expecifica y remplazarla por un Tag html valido.
|
|
« Última modificación: 12 Febrero 2010, 00:20 am por yoyahack »
|
En línea
|
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.
|
|
|
egyware
|
Yuhu!!! Lo logre usando esta expresion y le agregue unas cosa mas,gracias a ti $expresion = '/\/([^\s\[\]&;...]*)?#/'
entonces recapitulando ^ sirve para no considerar y se usa al principio ... para que sirve? Pregunto para saber no mas, ya solucione mi problema Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.Para la otra respuesta que salio, no se me ocurrio pero usar expresiones regulares me facilita la posibilidad de agregar más BBCode y otras cosas como esta Gracias a todos por su respuestas rapidas, lo agradezco
|
|
|
En línea
|
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Ahhh! Ahora ya entendi yo tambien (despues de yoyahack y releer el post anterior ...al mio ... ) Claro, no necesitas expresiones regulares (aunque se puede hacer, obteniendo los grupos). Solo que cada uno tiene su pro y su contra: Si lo haces mediante str_replace te combiene contar los tags y ver si cierran, porque si te queda un tag abierto te arruina el resto de la pagina (me ha pasado, tambien quise implementar mi propio bbcode). en cambio si lo haces en expresiones regulares (algo asi, porque no se mucho de las funciones que ofrece PHP para expresiones regualres: $var = "[b]Hola mundo![/b] /foto.jpg#"; list($antes, $medio, $despues) = split("(.*)\[b\](.*)\[\/b\](.*)", $var); $newVar = "$antes<b>$medio</b>$despues";
O algo asi, no lo he probado (lo probare), deberia funcionar Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.egyware, el "..." no existe asi, es "." que significa cualquier caracter, "..." significa 3 veces cualquier caracter seguidos Edit, en el editor de expreiones regulares, indica que no tiene que haber un "." entre lo capturado jeje, no se toma como cualquier caracter, sino como punto. o sea que si hay un "/hola.mundo#" no te lo va a tomar como valido, asi tambien con el "&;"
|
|
« Última modificación: 12 Febrero 2010, 00:39 am por raul338 »
|
En línea
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
Bueno egyware, si piensas extender tu lista de BBCODE, puedes mejor crear un POO así tu code queda mas bonito, organizado y optimizado.
|
|
|
En línea
|
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.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema con expresión regular PCRE
PHP
|
samur88
|
2
|
2,156
|
8 Febrero 2012, 17:34 pm
por samur88
|
|
|
ayuda con una expresion regular :(
Programación General
|
Elemental Code
|
6
|
4,662
|
23 Mayo 2012, 04:10 am
por Elemental Code
|
|
|
duda sobre patron de expresion regular
Programación General
|
MagnusIvanovich
|
5
|
3,447
|
14 Marzo 2013, 20:11 pm
por 1mpuls0
|
|
|
Ayuda Expresion Regular
Ingeniería Inversa
|
macmaikel
|
2
|
2,633
|
11 Junio 2013, 03:36 am
por macmaikel
|
|
|
Problema con expresión regular en PHP
PHP
|
Yaldabaot
|
1
|
2,609
|
22 Julio 2016, 13:33 pm
por Adrialmend
|
|