Retrouver l'extension d'un email


finstreet
WRInaute accro
WRInaute accro
 
Messages: 16999
Inscription: 10 Juil 2005

Retrouver l'extension d'un email

Message le Lun Jan 28, 2008 13:05

Bonjour à toutes et tous,

Bon alors j'ai des spams nombreux sur mes formulaires d'inscription. Je n'ai pas de captcha et je ne compte pas en mettre.

Par contre j'aimerais avoir une tite expression régulière pour bloquer certaines extensions et certains domaines dans les zemails

Exemple :

-machintruc@machin.truc
Là j'aimerais retrouver le ".truc"

-supertruc@nomdetruc.machin
Là j'aimerais retrouver le "nomdetruc.machin"

Voila ... si vous avez une tite astuce... je pense que c lié aux expressions régulières, mais si vous avez d'autres idées...

Marchi :)


Bobulum
WRInaute discret
WRInaute discret
 
Messages: 58
Inscription: 21 Mar 2005

Message le Lun Jan 28, 2008 13:07

Salut,

Perso afin d'éviter les . multiples dans les adresses, je ferais avec un simple substr en partant de la fin de la chaine jusqu'à un strstr de . ou de @.

Quelle phrase de geek quand même. :P

@+ :wink:


finstreet
WRInaute accro
WRInaute accro
 
Messages: 16999
Inscription: 10 Juil 2005

Message le Lun Jan 28, 2008 13:15

mdr .. .ben j'ai testé en fait, mais on fait comment pour aller à la fin de la chaine ? j'ai pas trouvé


seebz
WRInaute impliqué
WRInaute impliqué
 
Messages: 808
Inscription: 15 Avr 2007

Message le Lun Jan 28, 2008 13:22

$email = 'user@example.com';
$domaine = strstr($email, '@');
echo $domaine; //Affiche : @example.com

pour l'extension, faudra peut-être utiliser http://fr.php.net/strrpos


Bobulum
WRInaute discret
WRInaute discret
 
Messages: 58
Inscription: 21 Mar 2005

Message le Lun Jan 28, 2008 13:24

finstreet a écrit:mdr .. .ben j'ai testé en fait, mais on fait comment pour aller à la fin de la chaine ? j'ai pas trouvé


Le deuxième paramètre doit être à -1.

http://be2.php.net/manual/fr/function.substr.php, exemple 2.


finstreet
WRInaute accro
WRInaute accro
 
Messages: 16999
Inscription: 10 Juil 2005

Message le Lun Jan 28, 2008 13:54

Merci à tous les deux... je vais fouiller ca :)

Merci encore


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Lun Jan 28, 2008 15:04

avec ca :
Code: Tout sélectionner
$extension = substr($url, strrpos($url, '.') + 1);


finstreet
WRInaute accro
WRInaute accro
 
Messages: 16999
Inscription: 10 Juil 2005

Message le Lun Jan 28, 2008 15:06

le . peut etre aussi avant le @ ... c génant


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3884
Inscription: 16 Nov 2004

Message le Lun Jan 28, 2008 15:20

finstreet a écrit:Merci à tous les deux... je vais fouiller ca :)

Merci encore


lu finstreet

ca devrait aller + vite :

Code: Tout sélectionner
<?php

$mail = 'adresse@machin.truc';
$masque = '#(?:[a-zA-Z]+)(?:@?)(?:[^.]+)(?:.?)(.+)#';
preg_match_all($masque, $mail, $matches);
print_r($matches);
// Array ( [0] => Array ( [0] => adresse@machin.truc ) [1] => Array ( [0] => truc ) )


$mail = 'adresse@machin.truc';
$masque = '#(?:[a-zA-Z]+)(?:@?)(.+)#';
preg_match_all($masque, $mail, $matches2);
print_r($matches2);
// Array ( [0] => Array ( [0] => adresse@machin.truc ) [1] => Array ( [0] => machin.truc ) )

?>


finstreet
WRInaute accro
WRInaute accro
 
Messages: 16999
Inscription: 10 Juil 2005

Message le Lun Jan 28, 2008 15:26

Rhooo Koogar

Marchi :) Oui effectivement c bcp plus propre

Merci


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3884
Inscription: 16 Nov 2004

Message le Lun Jan 28, 2008 15:31

avec plaisir :D

j'ai oublié le (.) pour l'extention, si veux le capturer aussi

Code: Tout sélectionner
$mail = 'adresse@machin.truc';
$masque = '#(?:[a-zA-Z]+)(?:@?)(?:[^.]+)(.?.+)#';
preg_match_all($masque, $mail, $matches);
print_r($matches);
// Array ( [0] => Array ( [0] => adresse@machin.truc ) [1] => Array ( [0] => .truc ) )


++


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Lun Jan 28, 2008 16:04

finstreet a écrit:le . peut etre aussi avant le @ ... c génant

la ligne que j'ai donné marche car strrpos recherche à partir de la fin de la chaine. Pour capturer le . aussi il fait enlever le "+ 1"


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3884
Inscription: 16 Nov 2004

Message le Mar Jan 29, 2008 1:20

oui c'est vrai, ta fonction marche trés bien aussi et au passage, ca va te faire plaisir, ton code ira certainement 2 fois plus vite que mon mien.

Par contre, si je peux ?

des que l'on va aller chercher des extentions doubles du genre .fr.tc; fr.nr;xdir.fr... il va bien falloir prendre un regex, car si on cherche a pousser des caractereres avec des str_, cette fois ci c'est le PCRE qui ira 10 fois plus vite en temps machine avec sa seule ligne de code.

voila voila, bonne journée Dude


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités