Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/09/2011, 16h11   #1
Invité de passage
 
Inscription : juillet 2009
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 18
Points : 4
Points : 4
Par défaut Regex multiple dans un même texte

Bonjour,
Je fais appel à vous pour un problème d'expression régulière.

Voici mon texte :
Citation:
Existe aussi madeleines 500 g + 10% gratuites ou + 200g offert
Il faut que je mette des balises <Rouge></Rouge> autour du ou des textes suivants :
+ ... gratuit(e)(s)
+ ... offert(e)(s)
Il peut y en avoir plusieurs en même temps dans le texte (comme sur l'exemple).

Résultat :
Citation:
Existe aussi madeleines 500 g <Rouge>+ 10% gratuites</Rouge> ou <Rouge>+ 200g offert</Rouge>
J'arrive actuellement à identifier un seul cas avec l'expression suivante :
Citation:
\+(.*)?gratuit[e|s]*
Je pense ne pas être loin mais je bloque...

Merci d'avance pour votre aide.
tete-jaune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 01h22   #2
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

Code :
$str=preg_replace('/(\+.*?(?:gratuit|offert)e?s?)/i', '<rouge>$1</rouge>', $str);
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 11h41   #3
Invité de passage
 
Inscription : juillet 2009
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 18
Points : 4
Points : 4
Merci Eric2a pour ta réponse.
Ça fonctionne bien en PHP, je viens de faire un test.
Par contre, j'ai voulu transposé dans l'outil Filemaker et là ça ne fonctionne pas...
Les expressions régulières ne doivent pas être gérer tout à fait de le même manière.
En tout cas, merci pour la piste, je vais continuer dans ce sens là.

Juste une précision :
- quelle est la signification du / au tout début et à la fin dans /i?

Merci
tete-jaune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 14h53   #4
Invité de passage
 
Inscription : juillet 2009
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 18
Points : 4
Points : 4
Après une petite modif, ça fonctionne nickel également sur Filemaker :-)
Merci
Si j'ai une autre question regex, je peux la mettre ici ou ouvrir un nouveau sujet?
tete-jaune est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 15h04   #5
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 661
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 661
Points : 5 388
Points : 5 388
Citation:
Envoyé par tete-jaune Voir le message
- quelle est la signification du / au tout début et à la fin dans /i?
Les / sont les délimiteurs du motif. Il faut faire attention à ne pas utiliser comme délimiteur un caractère présent dans le motif. Genre si tu fais une regex sur une url, tu vas probablement avoir plein de / dedans, donc il vaudra mieux utiliser autre chose comme délimiteur
Le i après le / est un modificateur qui précise que le motif que tu utilises est insensible à la casse.

Et si tu as une nouvelle question sur une autre regex, mieux vaudrait ouvrir un nouveau sujet (et au passage, cliquer sur pour clore celui-ci)
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 15h20   #6
Invité de passage
 
Inscription : juillet 2009
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 18
Points : 4
Points : 4
Merci pour ces précisions.
Je continue de chercher de mon côté sur une autre problématique et si je bloque vraiment, je posterai un nouveau sujet demain.
tete-jaune est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h22.


 
 
 
 
Partenaires

Hébergement Web