Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/12/2006, 10h21   #1
Membre habitué
 
Avatar de elvan49
 
Laurent
Développeur Web
Inscription : octobre 2006
Messages : 226
Détails du profil
Informations personnelles :
Nom : Laurent
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2006
Messages : 226
Points : 141
Points : 141
Envoyer un message via Skype™ à elvan49
Par défaut Validation d'une adresse mail

Bonjour,

Dans un script de mail j'ai créé une structure de contrôle de validité de l'adresse. Hors dans la seconde partie de l'adresse je veux exclure une chaîne afin que si le code la trouve il invalide l'adresse. cette chaine est :
"mail.ircf", je ne dois pas avoir correctement codé ma $pattern car ça ne marche pas. Voici le code, en rouge la chaîne à exclure...

Code :
1
2
3
$email = $_POST['email'];
$pattern = '/(^[0-9])([a-z0-9])+(\.|-)?([a-z0-9]+)@([a-z0-9]+)\.[^"mail\.ircf"]([a-z]{2,4}$)/';
$mailValid = preg_match($pattern, $email);
Merci de vos réponses
elvan49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2006, 10h28   #2
Membre habitué
 
Inscription : février 2005
Messages : 88
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2005
Messages : 88
Points : 101
Points : 101
Salut,
Ce que je ferai moi pour moins me prendre la tête, c'est d'appeller une fois preg_match pour la validiter du mail et une deuxième fois pour chercher 'mail.icrf'.
Dans le deuxieme pattern tu nauras qu'à chercher '*@mail.icrf*'
frenchi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2006, 10h35   #3
Membre confirmé
 
Inscription : décembre 2006
Messages : 297
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 297
Points : 248
Points : 248
je pense que t'es " " sont en trop...
je pense que les [] font office en quelque sorte de ""
juJuv51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2006, 10h43   #4
Membre habitué
 
Avatar de elvan49
 
Laurent
Développeur Web
Inscription : octobre 2006
Messages : 226
Détails du profil
Informations personnelles :
Nom : Laurent
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2006
Messages : 226
Points : 141
Points : 141
Envoyer un message via Skype™ à elvan49
Par défaut intéressant

La solution "feinte" d'un 2eme contrôle est intéressante, je bosse dessus, mais avec ta syntaxe voici ce qu'on me retourne...
Code :
1
2
 
Warning: preg_match() [function.preg-match]: Empty regular expression in /var/www/html/l0-040/mailing.php on line 55
euh... je suis dessus.
elvan49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2006, 10h47   #5
Membre habitué
 
Avatar de elvan49
 
Laurent
Développeur Web
Inscription : octobre 2006
Messages : 226
Détails du profil
Informations personnelles :
Nom : Laurent
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2006
Messages : 226
Points : 141
Points : 141
Envoyer un message via Skype™ à elvan49
Par défaut guillemet et accolades

Citation:
Envoyé par juJuv51
je pense que t'es " " sont en trop...
je pense que les [] font office en quelque sorte de ""
En fait, je crois que les guillemets sont utiles lorsqu'on veut notifier une chaine spécifique, les accolades spécifient une suite de charactères sans ordre déterminés ainsi "^mail" excluerai exactement 'mail' alors que ^[mail] excluerai 'm' 'ma' 'mai' 'ail' 'ai' ... etc (si j'ai tout compris (ce qui est loin d'être sûr
elvan49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2006, 10h49   #6
Membre éclairé
 
Avatar de genova
 
Inscription : septembre 2004
Messages : 487
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 487
Points : 397
Points : 397
Envoyer un message via MSN à genova
Salut,
essaie avec cette fonction :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function email_valid($email, $check_server = TRUE)
{
	if (preg_match('#^[^@]*?@(.*?\.[a-zA-Z]{2,4})$#i', $email, $match))
	{
		if (preg_match('#^.+?@mail\.ircf$#i', $email))
		{
			return (FALSE);
		}
 
		if (!$check_server)
		{
			return (TRUE);
		}
 
		$check = FALSE;
		if (function_exists('checkdnsrr'))
		{
			$check = checkdnsrr($match[1]);
		}
 
		if (!$check)
		{
			$errno = 0;
			$errstr = '';
			$check = @fsockopen($match[1], 25, $errno, $errstr, 5);
		}
 
		return ($check);
	}
	return (FALSE);
}
qui te vérifie en plus si l'host de l'email existe

Par exemple :
Code :
1
2
3
4
if (email_valid('toto@yahoo.fr'))
{
   echo 'Valide !';
}
tu peux passer FALSE en second paramètre pour annuler la vérification du dns.
__________________
Testez le forum Fire Soft Board, un forum libre, gratuit et français.

Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.
genova est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2006, 11h32   #7
Membre habitué
 
Avatar de elvan49
 
Laurent
Développeur Web
Inscription : octobre 2006
Messages : 226
Détails du profil
Informations personnelles :
Nom : Laurent
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : octobre 2006
Messages : 226
Points : 141
Points : 141
Envoyer un message via Skype™ à elvan49
Par défaut Nickel chrome

La fonction marche à merveille (tu t'en doutais) !
Affaire classée !!!
elvan49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h48.


 
 
 
 
Partenaires

Hébergement Web