[PHP] Expression reguliere
Fermé
galio
-
24 août 2011 à 11:08
frenzer Messages postés 521 Date d'inscription samedi 27 juin 2009 Statut Membre Dernière intervention 2 septembre 2012 - 24 août 2011 à 13:08
frenzer Messages postés 521 Date d'inscription samedi 27 juin 2009 Statut Membre Dernière intervention 2 septembre 2012 - 24 août 2011 à 13:08
A voir également:
- [PHP] Expression reguliere
- Easy php - Télécharger - Divers Web & Internet
- Expression de recherche - Guide
- Expected expression ✓ - Forum C
- Php natif - Forum PHP
- Expression encoder - Télécharger - Divers Utilitaires
2 réponses
Groarh
Messages postés
682
Date d'inscription
vendredi 1 août 2008
Statut
Membre
Dernière intervention
28 juin 2015
185
24 août 2011 à 12:29
24 août 2011 à 12:29
Je pense qu'il va y avoir un autre problème... Prenons un exemple :
Si ta regexp passe là-dessus, elle va récupérer tout le texte et s'arrêter au dernier <br />. C'est à cause du (.+) . Même si les chaînes ne sont pas censées contenir de <br /> suplémentaires, il vaut mieux ne pas prendre de risque. Utilise l'option U pour rendre la regexp non gourmande (ungreedy).
https://www.php.net/manual/fr/reference.pcre.pattern.modifiers.php
De plus, en rajoutant des parenthèses, tu modifies le résultat inséré dans $customer_last_name. Si tu n'as pas besoin de conserver le résultat, utilise un groupe non capturant (?: ... )
M. Dupont<br /> blablabla<br /> bla.<br />
Si ta regexp passe là-dessus, elle va récupérer tout le texte et s'arrêter au dernier <br />. C'est à cause du (.+) . Même si les chaînes ne sont pas censées contenir de <br /> suplémentaires, il vaut mieux ne pas prendre de risque. Utilise l'option U pour rendre la regexp non gourmande (ungreedy).
preg_match('~(Mlle|Mr|Mme|M\.)(.+)<br />~U', $email, $customer_last_name));
https://www.php.net/manual/fr/reference.pcre.pattern.modifiers.php
De plus, en rajoutant des parenthèses, tu modifies le résultat inséré dans $customer_last_name. Si tu n'as pas besoin de conserver le résultat, utilise un groupe non capturant (?: ... )
preg_match('~(?:Mlle|Mr|Mme|M\.)(.+)<br />~U', $email, $customer_last_name));
frenzer
Messages postés
521
Date d'inscription
samedi 27 juin 2009
Statut
Membre
Dernière intervention
2 septembre 2012
168
24 août 2011 à 11:17
24 août 2011 à 11:17
Je ne m'y connait pas trop en regex mais bon
Tu oubli d'échapper ton . par un \ et ensuite tu devrait rajouté un couple de parenthése pour les opérateur OU ce qui donnerait :
preg_match( '~(Mlle|Mr|Mme|M\.)(.+)<br />~', $email, $customer_last_name ));
Je n'ai pas tester..
Tu oubli d'échapper ton . par un \ et ensuite tu devrait rajouté un couple de parenthése pour les opérateur OU ce qui donnerait :
preg_match( '~(Mlle|Mr|Mme|M\.)(.+)<br />~', $email, $customer_last_name ));
Je n'ai pas tester..
24 août 2011 à 13:08