Foros del Web » Programando para Internet » PHP »

expresiones regulares

Estas en el tema de expresiones regulares en el foro de PHP en Foros del Web. hola, estoy haciendo una especie de consola, y necesito validar comandos. por ejemplo.. un comando para banear una ip seria banear_ip [200.200.200.200] bien, lo que ...
  #1 (permalink)  
Antiguo 21/06/2006, 18:51
Avatar de Wdeah  
Fecha de Ingreso: julio-2005
Ubicación: Argentina
Mensajes: 109
Antigüedad: 18 años, 8 meses
Puntos: 0
expresiones regulares

hola, estoy haciendo una especie de consola, y necesito validar comandos.
por ejemplo.. un comando para banear una ip seria

banear_ip [200.200.200.200]

bien, lo que hago es explorar la cadena mediane la funcion ereg, de la siguiente manera


Código PHP:
if (ereg("(.*) \[(.*)\]"$comando$esta))
{
    print 
$esta[1].' '.$esta[2];

con este codigo lo que obtengo es:

banear_ip 200.200.200.200
comando / valor

el problema es que cuando pongo por ejemplo:

banear_ip [200.200.200.200] asdfkhgdfasdf

sigo obteniendo los mismo valores.. lo que quiero en este caso es decir que esta mal la sintaxis del comando.
de que manera podria solucionarlo? porque la funcion ereg lo que hace es verificar si se encuentran las coincidencias, pero yo necesito que sea exacto...
muchas gracias.
  #2 (permalink)  
Antiguo 21/06/2006, 20:12
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
Hola Wdeah, que yo recuerde en este momento no existe una función de PHP que resuelva tu problema concretamente (habría que investigar), pero para salir del apuro se me ocurre una simple solución:

Teniendo en cuenta como estas utilizando la función y como estas haciendo el trabajo, lo que podrías hacer es agregar al la expresion regular un simple (.*)? (un posible "cualquier cosa", despues de lo que esperamos)... despues es solo cuestión de fijarte si el array que te devuelve existe el elemento 2 (que viene a ser el "posible cualquier cosa"). No estoy seguro de como se comportara o si te puede llegar a dar algún problemas mas adelante pero por las dudas a la hora de fijarte que si existe has un empty() o un isset()... has las pruebas y fijate que te funciona mejor (esto ultimo es solo para estar seguro de lo que devuelve).

Saludos y suerte.

PD: puffff, hace bastante que no tenia tiempo para postear pero puede que ande mas por estos lados, saludos a todos
  #3 (permalink)  
Antiguo 21/06/2006, 22:16
Avatar de Wdeah  
Fecha de Ingreso: julio-2005
Ubicación: Argentina
Mensajes: 109
Antigüedad: 18 años, 8 meses
Puntos: 0
muchas gracias, me sirvio tu respuesta.
un saludo.

el codigo me quedo asi

Código PHP:
if (ereg("(.*) \[(.*)\](.*)"$comando$strs))
{

if (empty(
$strs[3]))
{
// codigo
}


Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:18.