Expression régulière

devlop78
Invité n'ayant pas de compte PHPfrance

07 oct. 2010, 15:34

Bonjour,

J'ai trouvé l'expression

Code : Tout sélectionner

^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\@([a-z0-9])(([a-z0-9-])*([a-z0-9]))+(\.([a-z0-9])([-a-z0-9_-])?([a-z0-9])+)+$/i
permettant de checker la validité d'une adresse e-mail (enfin sur un format courant). J'ai tout simplement fait :

Code : Tout sélectionner

$pattern = '/([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\@([a-z0-9])(([a-z0-9-])*([a-z0-9]))+(\.([a-z0-9])([-a-z0-9_-])?([a-z0-9])+)+/i'; preg_match_all ( $pattern , $mychar , $matches );
pour chercher les adresses e-mail dans un fichier.

Si je fais

Code : Tout sélectionner

$mychar = "Coucou [email protected] Comment ca va ? Je vais [email protected] Et toi ?";
Il me repère bien mes deux e-mails.

Donc j'ai fait utilisé file_get_contents pour prendre le contenu d'un fichier Thunderbird pour en extraire des e-mails. Mais là ... rien. J'ai rajouté "U" à coté du "/i", rien non plus. Comme j'ai un besoin de rentabilité, je n'ai pas eu le temps de chercher avec précaution, donc pas le temps de faire mes sauts de ligne avec des \n puis des \r puis des \r\n (par défaut vu que je suis sous windows). Mais je ne vois pas trop le rapport.

J'ai essayé ensuite file(monfichier) et j'ai utilisé le même script pour chaque ligne ... et là Magie, ça marche !

Quelqu'un a-t-il une idée ?

Merci d'avance.

ViPHP
ViPHP | 5462 Messages

08 oct. 2010, 11:51

deja y'a trop de capture dans ton expression

sion moi ca marche
$mychar = "Coucou [email protected]
Comment ca va ?
Je vais [email protected]
Et toi ?";

$pattern = '/[a-z0-9][-a-z0-9._]*[a-z0-9]*\@[a-z0-9][a-z0-9-]*[a-z0-9]+(?:\.[a-z0-9][-a-z0-9_-]?[a-z0-9]+)+/i';
preg_match_all  ( $pattern  , $mychar  , $matches  );
print_r($matches);
/*
Array
(
    [0] => Array
        (
            [0] => [email protected]
            [1] => [email protected]
        )

)
*/

devlop78
Invité n'ayant pas de compte PHPfrance

08 oct. 2010, 12:48

J'avoue l'expression n'était pas de moi et je voulais aller vite ... mais c'est sûr pour

$mychar = "Coucou [email protected]
Comment ca va ?
Je vais [email protected]
Et toi ?";


Elle fonctionne. Mais pas pour mon fichier INBOX de Thunderbird.