home Foro de soporte Espacio WEB PHP
 
Convertir ereg() a preg_match
#1 · ·

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:

Código:
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:

Cdigo
 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 ))

Come y duerme en el foro
Come y duerme en el foro
Haz clic para ver el perfil del usuario
Mensajes: 450
Desde: 20/Feb/2009
· ·
#2 ·

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)


@man / @woman
@man / @woman
Haz clic para ver el perfil del usuario
Mensajes: 4.001
Desde: 02/Ago/2008
· ·
#3 ·

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)


Come y duerme en el foro
Come y duerme en el foro
Haz clic para ver el perfil del usuario
Mensajes: 450
Desde: 20/Feb/2009
· ·
#4 ·

^ busca lo que sigue al comienzo del string.


@man / @woman
@man / @woman
Haz clic para ver el perfil del usuario
Mensajes: 4.001
Desde: 02/Ago/2008
· ·
#5 · ·
Escrito originalmente por GestionXls

^ busca lo que sigue al comienzo del string.

Gracias por la respuesta.

Al fin logre que funcione :) al final solo tuve que agregar "/" al inicio y final de las condiciones (parece ser que la sintaxis de preg_match lo exige, debe ser parte de esas pequeñas diferencias con ereg), el código me quedo así:

Código:
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.


Come y duerme en el foro
Come y duerme en el foro
Haz clic para ver el perfil del usuario
Mensajes: 450
Desde: 20/Feb/2009
· ·
#6 ·

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'.


@man / @woman
@man / @woman
Haz clic para ver el perfil del usuario
Mensajes: 4.001
Desde: 02/Ago/2008
· ·
#7 ·

Gracias por la explicación, tiene bastante sentido.


Come y duerme en el foro
Come y duerme en el foro
Haz clic para ver el perfil del usuario
Mensajes: 450
Desde: 20/Feb/2009
· ·
#8 · ·

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;
}


Usuario Novato
Usuario Novato
Haz clic para ver el perfil del usuario
Mensajes: 1
Desde: 23/Oct/2013
·
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
Foro de soporte · Espacio WEB · PHP
Opciones:
Subscríbete a este tema
Date de baja de este tema
Ir al subforo:  
TU NO PUEDES Escribir nuevos temas en este foro
TU NO PUEDES Responder a los temas en este foro
TU NO PUEDES Editar tus propios mensajes en este foro
TU NO PUEDES Borrar tus propios mensajes en este foro
Ahora son las 15:45 UTC+02:00 DST
Temas similares
No se han encontrado temas similares