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 22/05/2008, 13h50   #1
En attente de confirmation mail
 
Inscription : mars 2005
Messages : 90
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 90
Points : 26
Points : 26
Par défaut preg_replace sur une liste d'articles

Bonjour,

Je dispose d'une liste d'articles qui se présente ainsi :

Code :
1
2
3
4
5
{articles 05,29,10,12} {articles 04,57,20,15} texte divers texte divers qsdf sqdf qsdf 
{articles 38,06,17,02} {articles 11,27,42,22} {articles 80,73,46,65} texte divers texte divers qsdf sqdf qsdf 
{articles 18,07,01,18} texte divers texte divers qsdf sqdf qsdf 
{articles 45,11,10,03} {articles 03,21,50,12} {articles 15,08,14,02} texte divers texte divers qsdf sqdf qsdf 
etc...
Comme vous le voyez, la liste consiste en une ou plusieurs famille(s) de 4 articles, suivie(s) d'un texte descriptif.
Je souhaiterais, pour chaque ligne, conserver seulement la dernière famille d'articles et le texte descriptif, ce qui donnerait pour l'exemple ci-dessus :

Code :
1
2
3
4
{articles 04,57,20,15} texte divers texte divers qsdf sqdf qsdf 
{articles 80,73,46,65} texte divers texte divers qsdf sqdf qsdf 
{articles 18,07,01,18} texte divers texte divers qsdf sqdf qsdf 
{articles 15,08,14,02} texte divers texte divers qsdf sqdf qsdf

Je me dis que la solution doit être quelque chose comme :
Code :
$ligne = preg_replace('#(\{articles (\d\d),(\d\d),(\d\d),(\d\d)\}){2,}(.*?)#si', '$1.$6', $ligne);
Mais je n'arrive pas à trouver la syntaxe exacte.
Quelqu'un peut-il m'aider ?

Merci d'avance
matperino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2008, 14h19   #2
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 571
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 571
Points : 2 527
Points : 2 527
Salut, si dans ton texte tu n'as pas de }, tu peux essayer ceci
Code :
$ligne = preg_replace('#(\{articles \d{2},\d{2},\d{2},\d{2}\}[^\}]*$)#si', '$1', $ligne);
(non testé)

Bon développement
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2008, 14h32   #3
En attente de confirmation mail
 
Inscription : mars 2005
Messages : 90
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 90
Points : 26
Points : 26
merci de cette réponse, ça me parait bien, mais ça ne marche toujours pas...
matperino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/05/2008, 15h20   #4
En attente de confirmation mail
 
Inscription : mars 2005
Messages : 90
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 90
Points : 26
Points : 26
finalement ça marche, en faisant un preg_match au lieu du preg_replace :
Code :
1
2
3
4
foreach(file('liste.txt') as $ligne) {
preg_match('#(\{articles \d{2},\d{2},\d{2},\d{2}\}[^\}]*$)#si', $ligne, $match);
echo $match[1].'<br />';
}
Merci.
matperino 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 17h22.


 
 
 
 
Partenaires

Hébergement Web