Foros del Web » Programando para Internet » PHP »

Validadacion de email con preg_match

Estas en el tema de Validadacion de email con preg_match en el foro de PHP en Foros del Web. Hola Necesitando nuevamente de su ayuda, ya busque por varias partes y no se cual es el error. estoy validando una lista de correos que ...
  #1 (permalink)  
Antiguo 05/07/2012, 14:12
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 18
Validadacion de email con preg_match

Hola

Necesitando nuevamente de su ayuda, ya busque por varias partes y no se cual es el error.

estoy validando una lista de correos que se introducen en un textbox, el problema es que sea el que ponga primero me dice que el formato no es valido, pero solo el primero, los demas si los ejecuta bien, si cambio de lugar el primero por ejemplo al segundo o tercer lugar lo lee sin problemas, aqui el codigo

Código PHP:
$referidos=$_POST["referidos"]; // aqui recibo los correos

$datos explode("\n",$referidos); 

foreach (
$datos as $email) {

if (
preg_match('/^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/',$email)) {

//aqui va codigo que no viene al caso...........

}
else
{

echo 
"formato no valido";

}
// fin del if

}// fin del foreach 
El textbox es normal, ya trate pasandolo como htmlentities, si coloco un solo correo no hay problema.
Agradesco cualquier ayuda.

Saludos

Última edición por nestornoe; 05/07/2012 a las 14:25
  #2 (permalink)  
Antiguo 05/07/2012, 14:35
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Validadacion de email con preg_match

por que no utiliza filter_var es mucho mas facil y menos tedioso ?
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #3 (permalink)  
Antiguo 05/07/2012, 14:38
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 18
Respuesta: Validadacion de email con preg_match

Cita:
Iniciado por jotaincubus Ver Mensaje
por que no utiliza filter_var es mucho mas facil y menos tedioso ?
Ya trate y es lo mismo, trate filter_var y ereg,

Gracias por contestar
  #4 (permalink)  
Antiguo 05/07/2012, 14:42
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Validadacion de email con preg_match

y si le haces un echo a $mail para ver que te trae el primer mail ?

Código PHP:
Ver original
  1. foreach ($datos as $email) {
  2. echo $mail.'<br />';
  3. }
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #5 (permalink)  
Antiguo 05/07/2012, 14:46
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 18
Respuesta: Validadacion de email con preg_match

Cita:
Iniciado por jotaincubus Ver Mensaje
y si le haces un echo a $mail para ver que te trae el primer mail ?

Código PHP:
Ver original
  1. foreach ($datos as $email) {
  2. echo $mail.'<br />';
  3. }
Ya, creo que lo envia bien, al revisar el codigo fuente me aparecen, los correos, pero no se si esta bien el codigo por que aparecen solo como

[email protected]
[email protected]

en el navegador aparecen seguidos con un espacio entre ellos

[email protected] [email protected]

Saludos
  #6 (permalink)  
Antiguo 05/07/2012, 14:48
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Validadacion de email con preg_match

y si intentas

Código PHP:
Ver original
  1. explode(" ",$referidos)
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #7 (permalink)  
Antiguo 05/07/2012, 14:49
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 18
Respuesta: Validadacion de email con preg_match

Sera algo en el Textbox? tendre que enviar los datos de alguna otra forma?

Saludos
  #8 (permalink)  
Antiguo 05/07/2012, 14:51
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 18
Respuesta: Validadacion de email con preg_match

Cita:
Iniciado por jotaincubus Ver Mensaje
y si intentas

Código PHP:
Ver original
  1. explode(" ",$referidos)
No, lo toma como solo una cadena y me error
  #9 (permalink)  
Antiguo 05/07/2012, 14:52
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 18
Respuesta: Validadacion de email con preg_match

Creo que voy a tener que hacer una validación por javascript
  #10 (permalink)  
Antiguo 05/07/2012, 15:00
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 18
Respuesta: Validadacion de email con preg_match

Gracias por tu tiempo, deja sigo buscando

Saludos
  #11 (permalink)  
Antiguo 05/07/2012, 15:12
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 18
Respuesta: Validadacion de email con preg_match

Alguien me puede correr esto desde su servidor?

en el mio me da el error

Código PHP:
<?php
if ($_POST["ok"]==ok) {
    
    
$referidos=$_POST["uno"];
    
    
$datos explode("\n",$referidos); 
    
    foreach (
$datos as $email) { //para recorrer línea por línea
    
    
    
if (filter_var($emailFILTER_VALIDATE_EMAIL)) {
        echo 
$email;
    }
    else
    {
        echo 
"no valido<br>";
    }
    }
    
}
?>
<form id="form1" name="form1" method="post" action="prueba1.php">
  <label for="uno"></label>
  <textarea name="uno" id="uno" cols="45" rows="5"></textarea><input name="ok" type="hidden" value="ok" />
  <input name="enviar" type="submit" id="enviar" value="Submit" />
</form>
Gracias
  #12 (permalink)  
Antiguo 05/07/2012, 15:21
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Validadacion de email con preg_match

con /n no me funciona, lo probe con " " y me funciona perfecto... que error te saca ?

EDIT: Los email en el campo de texto se separan por espacios o la gente le da enter para ingresar otro email ?
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #13 (permalink)  
Antiguo 05/07/2012, 15:33
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 18
Respuesta: Validadacion de email con preg_match

Cita:
Iniciado por jotaincubus Ver Mensaje
con /n no me funciona, lo probe con " " y me funciona perfecto... que error te saca ?

EDIT: Los email en el campo de texto se separan por espacios o la gente le da enter para ingresar otro email ?
Le da enter, para ingresar otro abajo, deja pruebo con el espacio.

Gracias
  #14 (permalink)  
Antiguo 05/07/2012, 15:34
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 18
Respuesta: Validadacion de email con preg_match

Solo me envia no valido con " ", sera problema del servidor?

Ya me volvio loco esto
  #15 (permalink)  
Antiguo 05/07/2012, 15:40
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 18
Respuesta: Validadacion de email con preg_match

Trate agregarlos con , pero el ultimo me lo da como no valido, le agregue una coma al fina asi

$referidos.=$_POST["uno"];
$referidos.=",";

pero me marca un ultimo como no valido, como si estuviera enviando algo al final, pero no estoy envando espacios
  #16 (permalink)  
Antiguo 05/07/2012, 15:41
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Validadacion de email con preg_match

Si le vas a hacer con ENTER entonces usa esto:

Código PHP:
Ver original
  1. if ($_POST["ok"]==ok) {
  2.    
  3.     $referidos=$_POST["uno"];
  4.    
  5.     $datos = explode("\n",$referidos);
  6.    
  7.    
  8.     foreach ($datos as $email) { //para recorrer línea por línea
  9.  
  10.         if (filter_var(trim($email), FILTER_VALIDATE_EMAIL)) {
  11.             echo $email;
  12.         }
  13.         else
  14.         {
  15.             echo "no valido<br>";
  16.         }
  17.     }
  18.    
  19. }

Si lo vas a hacer con espacios usa esto:
Código PHP:
Ver original
  1. <?php
  2. if ($_POST["ok"]==ok) {
  3.    
  4.     $referidos=$_POST["uno"];
  5.    
  6.     $datos = explode(" ",$referidos);
  7.    
  8.    
  9.     foreach ($datos as $email) { //para recorrer línea por línea
  10.    
  11.         if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
  12.             echo $email;
  13.         }
  14.         else
  15.         {
  16.             echo "no valido<br>";
  17.         }
  18.     }
  19.    
  20. }
  21. ?>
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #17 (permalink)  
Antiguo 05/07/2012, 15:45
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 18
Respuesta: Validadacion de email con preg_match

Me funciona con coma, pero no es lo ideal, es mas problema importar varios correos y despues separarlos por coma,

¿el textbox envia /n?

si es asi puedo hacer un streplace

deja pruebo
  #18 (permalink)  
Antiguo 05/07/2012, 15:54
 
Fecha de Ingreso: diciembre-2011
Mensajes: 159
Antigüedad: 12 años, 4 meses
Puntos: 18
Respuesta: Validadacion de email con preg_match

Gracias por tu tiempo, al parece al hacer enter lo que envia es /r/n no solo /n

lo deje en enter, pero realizo el cambio a coma con esto

$referidos=str_replace("\r\n",",",$referidos);

y si funciona.

Muchisimas gracias por tu tiempo.

Saludos
  #19 (permalink)  
Antiguo 05/07/2012, 15:56
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 10 meses
Puntos: 394
Respuesta: Validadacion de email con preg_match

O tambien puede hacer esto para no usar comas ni nada de nada:

Código PHP:
Ver original
  1. <?php
  2. if ($_POST["ok"]==ok) {
  3.    
  4.     $referidos = nl2br($_POST["uno"]);
  5.    
  6.     $datos = explode("<br />",$referidos);
  7.    
  8.    
  9.     foreach ($datos as $email) { //para recorrer línea por línea
  10.  
  11.         if (filter_var(trim($email), FILTER_VALIDATE_EMAIL)) {
  12.             echo $email;
  13.         }
  14.         else
  15.         {
  16.             echo "no valido<br>";
  17.         }
  18.     }
  19.    
  20. }
  21. ?>
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Etiquetas: email, preg_match, validar
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 12:34.