[PHP] Expression reguliere
galio
-
frenzer Messages postés 521 Date d'inscription Statut Membre Dernière intervention -
frenzer Messages postés 521 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai une expression regluiere qui fonctionne:
if (preg_match( '~Mlle(.+)<br />~', $email, $customer_last_name )
|| preg_match( '~Mr(.+)<br />~', $email, $customer_last_name )
|| preg_match( '~Mme(.+)<br />~', $email, $customer_last_name )
|| preg_match( '~M.(.+)<br />~', $email, $customer_last_name ))
mais elle est un peu longue comme vous voyez... Existe-t-il une solution plus compacte?
J'ai deja essayé:
preg_match( '~Mlle|Mr|Mme|M.(.+)<br />~', $email, $customer_last_name ))
ca ne fonctionne pas...
merci d'avance
j'ai une expression regluiere qui fonctionne:
if (preg_match( '~Mlle(.+)<br />~', $email, $customer_last_name )
|| preg_match( '~Mr(.+)<br />~', $email, $customer_last_name )
|| preg_match( '~Mme(.+)<br />~', $email, $customer_last_name )
|| preg_match( '~M.(.+)<br />~', $email, $customer_last_name ))
mais elle est un peu longue comme vous voyez... Existe-t-il une solution plus compacte?
J'ai deja essayé:
preg_match( '~Mlle|Mr|Mme|M.(.+)<br />~', $email, $customer_last_name ))
ca ne fonctionne pas...
merci d'avance
A voir également:
- [PHP] Expression reguliere
- Easy php - Télécharger - Divers Web & Internet
- Expression écrite cm1 cm2 télécharger gratuit - Télécharger - Éducatifs
- Microsoft expression encoder - Télécharger - Divers Utilitaires
- Expert php pinterest - Télécharger - Langages
- Php alert ✓ - Forum PHP
2 réponses
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
Statut
Membre
Dernière intervention
168
+1 Très instructif merci