Avatar Image
Come y duerme en el foro
Come y duerme en el foro

Hola, me gustaría saber una forma de cambiar una validación que usa la función ereg() por alguna que use la función preg_match()

Esta es la función de la que hablo:

function check_email($variable){
if(ereg("^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+.)*[a-zA-Z0-9-]{2,200}.[a-zA-Z]{2,6}$", $variable ))
return true;
else
return false;
}

Me gustaría hacer lo mismo pero con preg_match() desde que PHP 5.3.0+ ha vuelto obsoleta la funcion ereg(), M@ usa PHP 5.2.17 pero mi servidor local es 5.3.0, no quiero instalar viejas versiones y lidiar con apache y todo eso (estoy en Win7 64bits).

Si simplemente cambio el nombre de la función sale este error:

Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in C:UsersOwnerblablabla:Pfunctions.php on line 122

122 es:

 if(preg_match("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]{2,200}\.[a-zA-Z]{2,6}$", $variable ))
Avatar Image
@man / @woman
@man / @woman

me baso en que ereg devuelve un booleano mientras que preg_match un integer, probaste con:

if(preg_match("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\.)*[a-zA- Z0-9-]{2,200}\.[a-zA-Z]{2,6}$", $variable )==1) return true;
else return false;

(no he comprobado el funcionamiento en mi pc)

Avatar Image
Come y duerme en el foro
Come y duerme en el foro

Si ya lo he probado el error es el mismo, ereg() devuelve el tamaño del string que concuerda, si el tamaño es 0, entonces devuelve 1 por alguna razón, devuelve False si nada concuerda o hay un error, preg_match() devuelve 1 (si algún termino concuerda, porque cuando algo concuerde deja de contar :S), 0 (si nada concuerda) y false (si hay algún problema).

Por otro, me podrías decir cual es la función de ^, se que en una calculadora seria potencia, pero en esto no se bien que hace. (Buscare en un manual de :P)

Avatar Image
@man / @woman
@man / @woman

^ busca lo que sigue al comienzo del string.

Avatar Image
Come y duerme en el foro
Come y duerme en el foro
function check_email($variable){
if(preg_match("/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]{2,200}\.[a-zA-Z]{2,6}$/", $variable ))
return true;
else
return false;
}

Seguiré haciendo Pruebas pero hasta ahora me funciona bien.

Avatar Image
@man / @woman
@man / @woman

Si no me falla la memoria, las barras (/) son para delimitar (separar) la expresión regular contenida de los delimitadores de la cadena; en otras palabras, la sintaxis de la línea desde afuera->dentro -hasta las comillas- es parte de la instrucción de Php, y lo que hay dentro (de las barras '/') es la expresión 'pura'.

Avatar Image
Come y duerme en el foro
Come y duerme en el foro

Gracias por la explicación, tiene bastante sentido.

dcc2555
Usuario Novato
Usuario Novato

Hola Amigos !!

Este post es viejo pero me encontre con un problema con la funcion eregi y neesito ayuda.

Debo reemplazar la funcion "eregi" por "preg_match"

El codigo en cuestion es este:

Gracias !!!

}
//verificación si el email es correcto
elseif(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email)){
$error=2;
}

ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
No se han encontrado temas similares