Foros del Web » Programando para Internet » PHP »

duda con funcion ereg

Estas en el tema de duda con funcion ereg en el foro de PHP en Foros del Web. hola, quiero que comprobar que el usuario solo pueda metar solo letras y numeros en un campo en caso contrario que salga un mensaje de ...
  #1 (permalink)  
Antiguo 20/03/2010, 09:41
 
Fecha de Ingreso: febrero-2010
Mensajes: 63
Antigüedad: 14 años, 2 meses
Puntos: 0
duda con funcion ereg

hola,

quiero que comprobar que el usuario solo pueda metar solo letras y numeros en un campo en caso contrario que salga un mensaje de error.
No me sale decirme que esta mal:

if (!ereg('[a-z0-9]',$nombre)){

//comprabmos que el nombre introducido no contenga ningun caracter no permitido
echo "caracter no permitido en el nombre";

}
  #2 (permalink)  
Antiguo 20/03/2010, 09:44
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: duda con funcion ereg

ereg comprueba si hay al menos una ocurrencia del patrón. Tu lo que quieres comprobar es lo contrario, si existe alguna coincidencia que no esté en el patrón (en ereg no se como se hace, pero preg tiene una sintaxis similar y se pone ^ después del [).
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #3 (permalink)  
Antiguo 20/03/2010, 11:08
 
Fecha de Ingreso: febrero-2010
Mensajes: 63
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: duda con funcion ereg

lo unico que quiero es saber en que estoy fallando o cual es la forma correcta de hacer lo que pido.


gracias y salu2
  #4 (permalink)  
Antiguo 20/03/2010, 11:10
 
Fecha de Ingreso: diciembre-2008
Mensajes: 69
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: duda con funcion ereg

Buenas.

Por empezar, te sugiero que no utilices la función ereg o eregi, sino preg_match, ya que en la versión 6 se va a suprimir y en la 5.3 ya se le resta importancia.

La sintaxis de preg_match es muy similar y te propongo una solución:

Código PHP:
if(!preg_match("/^[a-zA-ZáéíóúÁÉÍÓÚ0-9]*$/",$nombre)){
echo
"Lo que sea";} 
Espero te sirva.
  #5 (permalink)  
Antiguo 20/03/2010, 11:43
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: duda con funcion ereg

Código PHP:
Ver original
  1. if(!preg_match("/^[a-z0-9]*$/",$nombre)){
  2. echo"Es correcto, no hay carácteres anómalos.";}

No quiere acentos, solo las letras a-z (¿sin mayúsculas?) y números.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #6 (permalink)  
Antiguo 20/03/2010, 11:53
 
Fecha de Ingreso: diciembre-2008
Mensajes: 69
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: duda con funcion ereg

Más bien en el echo debería decir que es incorrecto. Bueno, esa es la alternativa a ereg. Si querés permitir espacios añadí [:space:] luego del 9.

Un saludo.
  #7 (permalink)  
Antiguo 20/03/2010, 12:07
 
Fecha de Ingreso: febrero-2010
Mensajes: 63
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: duda con funcion ereg

estoy copiando y pengado pero no me esta funcionando, porque metos cararacteres que no deberia de aceptar como por ejemplo _ o < y no hace nada.
  #8 (permalink)  
Antiguo 20/03/2010, 17:26
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: duda con funcion ereg

Código PHP:
Ver original
  1. if(!preg_match("/^([a-z0-9]+)$/",$nombre)){
  2. echo"Es correcto, no hay carácteres anómalos.";}

Este código lo que va a hacer es ejecutar echo "Es correcto..." si y solo si no hay mas que los carácteres a a la z y 0 al 9 en la cadena nombre.

Es corregido del anterior. En Preg, * es el caracter wild (osea cualquier carácter).
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #9 (permalink)  
Antiguo 21/03/2010, 08:58
 
Fecha de Ingreso: diciembre-2008
Mensajes: 69
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: duda con funcion ereg

Pero observo que está como !preg_match
...es decir, si no se cumple la condición...
  #10 (permalink)  
Antiguo 21/03/2010, 09:28
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: duda con funcion ereg

ops, vale, se me fue la cabeza, si quitale el !.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #11 (permalink)  
Antiguo 26/03/2010, 06:03
 
Fecha de Ingreso: mayo-2009
Mensajes: 70
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: duda con funcion ereg

Hola ...

Tengo una pregunta. Ando adaptando mi web a PHP5.3 y logicamente esto implica abandonar el ereg por el preg.

Pues bien tengo dos problemas:

1. Hago muchas sustituciones de texto con eregi_replace() que no distingue de mayusculas o minusculas. Al usar preg_replace() si me hace distinción (como ereg_replace) ... al no existir pregi_replace() ... como narices soluciono este problema? Sabeis alguna solucion?

2. Uso mucho el sistema de meter en una frase un TAG con el formato #TAG# para luego ser sustituido por la palabra. Aqui el problema que tengo es que preg_replace() me cambia lo de dentro pero me deja los "#". ¿Como soluciono esto?

Pongo un ejemplo de codigo muy explicativo:

Código PHP:
$test "adsadas sad asd asd asd adas #hola#, asdas d #HOLA# asdasd";

echo 
preg_replace("#HOLA#""adios"$test); 
echo 
"<br>";
echo 
eregi_replace("#HOLA#""adios"$test); 
Dandome como resultado en pantalla:

adsadas sad asd asd asd adas #hola#, asdas d #adios# asdasd
adsadas sad asd asd asd adas adios, asdas d adios asdasd

NOTA: Lo estoy ejecutando en una version 5.2.x aun no he cambiado al 5.3.x

Gracias.

Etiquetas: ereg, funcion
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 23:28.