1) Test sur une email
posté par Yves Maistriaux (ID : 1)
Permet de vérifier la validité des adresses email entrées par les utilisateurs.
Accepte les caractères point (.), le tiret (-) et l'underscore (_) sauf :
- en débutant.
- ils ne peuvent se suivre.
- l'underscore n'est pas accepté dans les noms de domaines
Utilise les fonctions ereg et les classes prédéfinies POSIX
et preg_match avec les classes PCRE.
Vous pouvez modifier la dernière valeur de l'intervalle de reconnaissance {2,4} pour le nom de domaine ayant plus de 4 caractères, comme museum par exemple ce qui donnera : {2,6}
J'ai volontairement écarté de cette analyse les adresses email farfelues telles que celles que l'on peut trouver chez caramail et compagnie.
Exemple :
mon-_.email.-_amoi@caramail.com
ou
monemail______@hotmail.com
Si vous souhaitez quand même accepter ce genre d'email, rien ne vous empêche d'apporter une modification à la regex, voir même en utiliser une autre plus permisive.
Je vous conseille vivement l'emploi de la regex avec
preg_match qui est bien plus rapide que ereg.
<?php
$chaine="info@e-ur-ope.a.n-cards.com";
//--- bon j'avoue que l'email est assez particulière mais
elle m'a permis de réaliser un masque qui est valable pour
toutes les email.
//--- avec ereg et les classes POSIX
if(!ereg("^[[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-.]?[[:alnum:]])*\.([a-z]{2,4})$",$chaine))
{
echo "pas bon";
}
else
{
echo "bon";
}
//--- la même avec preg_match et les classes PCRE
if(!preg_match('`^[[:alnum:]]([-_.]?[[:alnum:]])*@[[:alnum:]]([-.]?[[:alnum:]])*\.([a-z]{2,4})$`',$chaine))
{
echo "pas bon";
}
else
{
echo "bon";
}
?>
2) Email cliquable
posté par Yves Maistriaux (ID : 15)
Regex permettant de rendre des adresses emails cliquables dans une chaine texte.
<?php
//--- un texte au hasard ---//
$text='on adresse email est info@europeancards.com et celle de mon pote est truc@unsite.xxx... voili, voilou !'
//--- La regex ---//
$text=eregi_replace('[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z]+)+)''<a href="mailto:$1">$1</a>',$text);
echo $text;
//--- Sous forme de fonction ---//
function clickmail($text)
{
$text=eregi_replace('([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z]+)+)','<a href="mailto:$1'>$1</a>',$text);
}
echo @clickmail($text);
?>