Page 1 sur 1

Expression régulière

Posté : 07 oct. 2010, 15:34
par devlop78
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.

Re: Expression régulière

Posté : 08 oct. 2010, 11:51
par stealth35
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]
        )

)
*/

Re: Expression régulière

Posté : 08 oct. 2010, 12:48
par devlop78
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.