Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/05/2011, 09:05
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 18 años
Puntos: 447
Respuesta: Eliminar entradas con mal formato

Hola MaTy09:

Si quieres hacerlo desde mysql, podrías utilizar expresiones regulares (REGEXP) para encontrar aquellos correos que no cumplan con el patrón que estás definiendo, algo como esto:

Código:
REGEXP "^[a-zA-Z][a-zA-Z0-9.\-]*[a-zA-Z0-9.\-]@[a-zA-Z0-9][a-zA-Z0-9._\-]*[a-zA-Z0-9].[a-zA-Z]{2,4}$
"
Código MySQL:
Ver original
  1. mysql> create table correos (id int, correo varchar(100));
  2. Query OK, 0 rows affected (0.09 sec)
  3.  
  4. mysql> insert into correos values (1, '[email protected]'),
  5.     -> (2, '[email protected]'),
  6.     -> (3, 'juan_[email protected]'),
  7.     -> (4, '5asdasd@asdasdasd'),
  8.     -> (5, 'juan.hernandez@[email protected]');
  9. Query OK, 5 rows affected (0.03 sec)
  10. Records: 5  Duplicates: 0  Warnings: 0
  11.  
  12. mysql> select * from correos;
  13. +------+------------------------------+
  14. | id   | correo                       |
  15. +------+------------------------------+
  16. |    1 | [email protected]               |
  17. |    2 | [email protected] |
  18. |    3 | [email protected]    |
  19. |    4 | 5asdasd@asdasdasd            |
  20. |    5 | juan.hernandez@[email protected] |
  21. +------+------------------------------+
  22. 5 rows in set (0.00 sec)
  23.  
  24. mysql> update correos set correo = null where correo not regexp
  25.     -> "^[a-zA-Z][a-zA-Z0-9.\-]*[a-zA-Z0-9.\-]@[a-zA-Z0-9][a-zA-Z0-9._\-]*[a-zA-
  26. Z0-9].[a-zA-Z]{2,4}$";
  27. Query OK, 3 rows affected (0.09 sec)
  28. Rows matched: 3  Changed: 3  Warnings: 0
  29.  
  30. mysql> select * from correos;
  31. +------+------------------------------+
  32. | id   | correo                       |
  33. +------+------------------------------+
  34. |    1 | [email protected]               |
  35. |    2 | [email protected] |
  36. |    3 | NULL                         |
  37. |    4 | NULL                         |
  38. |    5 | NULL                         |
  39. +------+------------------------------+
  40. 5 rows in set (0.00 sec)


el correo 3 no es válido porque contiene un (_), el correo 4 no es válido porque comienza con un número y el correo 5 no es válido porque contiene dos (@). Aquí sería cuestión de que generes un patrón que cumpla con todos los criterios que puedas considerar, este es sólo un ejemplo de lo que puedes hacer. tu expresión puede ser tan simple o tan complicada como quieras.

Saludos.
Leo.