IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

preg_replace sur une liste d'articles [RegEx]


Sujet :

Langage PHP

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 90
    Points : 57
    Points
    57
    Par défaut preg_replace sur une liste d'articles
    Bonjour,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $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

  2. #2
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut, si dans ton texte tu n'as pas de }, tu peux essayer ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 90
    Points : 57
    Points
    57
    Par défaut
    merci de cette réponse, ça me parait bien, mais ça ne marche toujours pas...

  4. #4
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 90
    Points : 57
    Points
    57
    Par défaut
    finalement ça marche, en faisant un preg_match au lieu du preg_replace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. etiquette ou label sur une liste deroulante
    Par camyo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 07/11/2005, 16h09
  2. simuler un double click sur une liste dans un dbgrid
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 1
    Dernier message: 01/09/2005, 10h45
  3. Réponses: 4
    Dernier message: 16/06/2005, 15h37
  4. Selectionnet tous ou faire un clear sur une liste
    Par Canou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/11/2004, 10h26
  5. [Débutant][jsp] évènement sur une liste
    Par phoebe dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 14/05/2004, 10h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo