2010-12-14 31 views
0

Je l'ai utiliséPourquoi la validation de mon courriel ne fonctionne-t-elle pas? PHP

if (!preg_match('/[a-z||0-9]@[a-z||0-9].[a-z]/', $email)) { 
    [PRINT ERROR] 
} 

&

if (!eregi("^[0-9]+$", $email)) { 
    [PRINT ERROR] 
} 

&

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    [PRINT ERROR] 
} 

J'ai aussi essayé de prendre le! et le faire fonctionner à rebours, mais pour une raison quelconque, aucun de ces travaux pour savoir si elle est valide. Toutes les idées pourquoi? ... je l'ai dans une autre instruction if, je ne suis pas sûr si cela pourrait être la cause ..

J'utilise PHP

+0

Peut-être que vous pourriez fournir * il *? Qu'y a-t-il dans '$ email'? – Gordon

+0

$ email provient d'un formulaire. Le nom du champ de saisie est email et j'ai utilisé $ email = $ _REQUEST ['email']; pour collecter l'info dedans. Je sais que cette partie fonctionne comme je peux obtenir l'information correcte pour me contacter par email – Chris

+0

Cela a fonctionné merci, je suppose que quand j'ai fait le mien il a été foiré quelque part – Chris

Répondre

1

Essayez

'/[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}/' 

...

if (!preg_match('/[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}/', strtoupper($email))) { 
    [PRINT ERROR] 
} 

Pour autant que je peux voir, aucun de vos expressions regex égalerait un email.

+0

Je viens de m'en débarrasser d'un site web, je l'ai corrigé pour la validation de mon email quand j'essayais de le faire fonctionner, j'essaie le vôtre et voir si ça fonctionne peut-être que j'ai juste foiré – Chris

+0

Rappelez-vous, vous pouvez utiliser http://www.regextester.com/ pour tester les expressions régulières – mrwooster

0

Vérifiez votre version php. eregi est obsolète après 5.3.0. En outre, l'expression régulière n'est pas correcte.

+1

déconseillé! = Enlevé – Gordon

1

Essayez ce à partir du code source Kohana:

function email($email) 
{ 
    return (bool) preg_match('/^[-_a-z0-9\'+*$^&%=~!?{}]++(?:\.[-_a-z0-9\'+*$^&%=~!?{}]+)*[email protected](?:(?![-.])[-a-z0-9.]+(?<![-.])\.[a-z]{2,6}|\d{1,3}(?:\.\d{1,3}){3})(?::\d++)?$/iD', (string) $email); 
} 
0

Essayez cette (de wordpress):

// from wordpress code: wp-includes/formatting.php 
function is_email($user_email) 
{ 
    $chars = "/^([a-z0-9+_]|\\-|\\.)[email protected](([a-z0-9_]|\\-)+\\.)+[a-z]{2,6}\$/i"; 

    if (strpos($user_email, '@') !== false && strpos($user_email, '.') !== false) 
    { 
     if (preg_match($chars, $user_email)) { 
      return true; 
     } else { 
      return false; 
     } 
    } else { 
     return false; 
    } 
}