|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre actif
![]() Inscription : août 2002 Messages : 291 ![]() |
Bonjour,
Je m'initie aux expressions régulières avec Le PDF de Naholyr et je bute déjà sur le premier exemple. Voici le code retravaillé (une partie en POSIX et l'autre en PCRE) Le principe est de, d'abord, vérifier que la chaine $adresse est bien un email valide, puis d'extraire cette adresse de la chaine $texte. Les 2 méthodes utilisent le même pattern à la syntaxe près. Code :
- Tel quel, les 2 méthode m'inquent que le mail est invalide mais l'extraient correctement de la chaine $texte - Si j'ajoute un tiret (-) entre "mon" et "fai", c'est le contraire : le mail serait valide mais impossible de l'extraire.
__________________
il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard Des fois ça malche, des fois ça malche pas. Garcimore
|
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
je sais pas si ca peut t'aider, mais y a la FAQ qui traite ca : http://php.developpez.com/faq/?page=mail#mail_verif
et un conseil, ne travaille qu'en PCRE, donc preg_ parce que c'est beaucoup plus rapide !!
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
00
|
|
|
#3 |
|
Membre actif
![]() Inscription : août 2002 Messages : 291 ![]() |
J'ai bien l'intention de na travailler qu'avec PCRE mais je voudrais également comprendre POSIX pour le cas où je tomberait sur une RegExp POSIX.
De plus, j'ai du lire quelque part que, pour des requetes simples, il peut être plus simple d'utiliser [:alpha:] plutot que \w qui est plus complète et donc moins précise. Je lis ton lien... C'est bête mais j'ai pensé à la FAQ quand j'ai cherché une doc sur les RegExp mais je n'y ai pas pensé pour mon pb
__________________
il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard Des fois ça malche, des fois ça malche pas. Garcimore
|
|
|
00
|
|
|
#4 |
|
Membre actif
![]() Inscription : août 2002 Messages : 291 ![]() |
Bon, déjà il faudrait que je mette les if dans le bon ordre:
C'est à dire que si preg_match retourne vrai c'est que c'est "valide" et non "invalide" comme je l'ai écrit Ensuite, comment j'ajoute la possibilité du signe "-" dans mes crochets ? ([\w\.]+)@([\w\.]+\.[a-z]+) comme ça ([\w\.]+)@([\w\.-]+\.[a-z]+) ou comme ça ([\w\.]+)@([\w\.\-]+\.[a-z]+) ? Et, après avoir lu le modèle de la FAQ, je vais chercher (tout seul comme un grand
__________________
il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard Des fois ça malche, des fois ça malche pas. Garcimore
|
|
|
00
|
|
|
#5 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Salut
Juste au cas où le lien serait passé inaperçu malgré sa présence dans la FAQ : Initiation aux expressions régulières en PHP Étant donné que la norme POSIX est moins complète que les PCRE, tu peux apprendre uniquement ces dernières. Maxoo : ce n'est pas toujours plus rapide, malheureusement. Fais un test sur des regexes simples, tu verras
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#6 | |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
Citation:
ce n'est qu'un exemple mais j'ai toujours vu les sites dire que c'était plus rapide, et je l'ai testé moi même, y a même des sites qui chronomètre le temps d'éxecution je crois. Enfin bref, moi j'ai toujours vu que c'était plus rapide...
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
|
00
|
|
|
#7 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
C'est aussi ce que j'ai toujours lu mais, en écrivant le tuto, j'ai fait qqes tests et ça n'a pas confirmé...
Certaines regex simples inversent la tendance. Si j'ai le temps un jour, je te donnerai un exemple. [/HS]
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#8 | |
|
Expert Confirmé
![]() Maxime PasquierExpert PHP Inscription : novembre 2004 Messages : 2 126 ![]() |
Citation:
Oki, d'un autre coté, c'est plus sur les regex compliqué que l'on veut connaitre la rapidité, sachant que sur une regex simple, ca ira vite de toute façon
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans votre éditeur. Mon espace Développez : mes Créations. Rencontre & Carte des Membres de Developpez.com, version 3.0 |
|
|
|
00
|
|
|
#9 | |||
|
Membre actif
![]() Inscription : août 2002 Messages : 291 ![]() |
Désolé pour le délai mais j'ai pas recu la notification (ou alors elle est partie dans le spam
Voici la dernière version (n'oublions pas que le but n'est pas de créer une fonction de test d'adresse mail mais de comprendre les RegExp) Code :
".m.test@monfai.fr" est bloquée (le point au début) Vous remarquerez pour pour retrouver l'adresse mail dans la phrase, j'ai du ajouter "\s" au début et à la fin. Sinon, l'adresse ".m.test@monfai.fr" était bien trouvé puisque le point de départ était considérée "hors pattern". J'ai également limité la longueur du domaine ( "{2,4}" ) car si la phrase était "Cette chaine : m.test@mon-fai.frcontient un mail" (remarquez l'espace oublié entre le fr et le mot suivant), le test trouvait l'adresse "m.test@mon-fai.frcontient" Mais je ne sais toujours pas si' j'ai saisi correctement mes "tirets (-)" dans les plages de valeurs ou s'il faut plutot les écrire "[\w\.\-]" ? Citation:
__________________
il ne faut pas de tout pour faire un monde. Il faut du bonheur et rien d'autre. Paul Eluard Des fois ça malche, des fois ça malche pas. Garcimore
|
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com