Extraire les adresses e-mail d'une chaine de caractères
Cette fonction permet d'extraire les adresses e-mails éparpillées ici et là dans un texte. Elle retourne un tableau contenant toutes les adresses e-mails uniques, c'est-à-dire que les adresses en double dans le texte ne sont enregistrées qu'une fois dans le tableau final.
C'est ce genre de fonctions qu'utilisent les groupes de hackers / spammers pour développer des bots qui parcourent les pages Internet pour en récolter des listes d'adresses e-mail. Je mets cette fonction à disposition dans un but purement éducatif pour présenter le principe et pour vous inviter à l'utiliser dans un contexte légal. En revanche, je ne peux être tenu responsable d'une quelconque utilisation illégale, malhonnête ou de quelconque dommage subit suite à son emploi.
Portion de code
<?php
/**
* Extrait les adresses e-mails présentes dans une chaine.
* La fonction retourne un tableau des adresses e-mails. Si
* des adresses e-mails se trouvent en doublon dans la chaine,
* alors la fonction ne gardera dans le tableau qu'un seul exemplaire
* des adresses e-mails.
*
* @author Hugo HAMON <webmaster@apprendre-php.com>
* @licence LGPL
* @param string $sChaine la chaine contenant les e-mails
* @return array $aEmails[0] Tableau dédoublonné des e-mails
*/
function extractEmailsFromString($sChaine) {
if(false !== preg_match_all('`\w(?:[-_.]?\w)*@\w(?:[-_.]?\w)*\.(?:[a-z]{2,4})`', $sChaine, $aEmails)) {
if(is_array($aEmails[0]) && sizeof($aEmails[0])>0) {
return array_unique($aEmails[0]);
}
}
return null;
}
/**
* Exemple d'utilisation
*/
$sChaine = 'Paul Prédot (paul-predot@jambon.com);';
$sChaine.= ' Remi Martin (remi@martin.com);';
$sChaine.= ' Joseph Falco (joseph.falco@anyone.com);';
$sChaine.= ' Remi Martin (remi@martin.com);';
$sChaine.= ' Joseph Falco (joseph.falco@anyone.com)';
$aEmails = extractEmailsFromString($sChaine);
echo '<pre>';
print_r($aEmails);
echo'</pre>';
?>
Résultat
Array
(
[0] => paul-predot@jambon.com
[1] => remi@martin.com
[2] => joseph.falco@anyone.com
)
1
1. Par Mickaël Wolff le 12/06/2008 12:39