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 :

Une expression régulière


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2005
    Messages : 48
    Points : 35
    Points
    35
    Par défaut Une expression régulière
    Bonjour,

    Je n'arrive pas à ecrire l'expression régulière que je desire.

    Expression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo preg_replace('`<div>(.+)</div>`','<div>$1 !</div>','<div>test</div><div>test</div>');
    Résultat :

    Résultat désiré :

    Est ce que quelqu'un saurais ecrire cette expression ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 440
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 440
    Points : 15 814
    Points
    15 814
    Par défaut
    tu dois rendre ton expression non gourmande
    donc soit tu fais ça
    soit ça :

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2005
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    Merci Mathieu pour ta réponse qui fonctionne comme je le désirais. Malheureusement une fois integré dans mon script cette expression ne fonctionne pas comme désiré (le contenu des div est trés diverse).

    Au départ je suis parti sur POSIX avec cette expression qui fonctionne bien mais qui est gourmande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo ereg_replace('<div>(.+)</div>',"<div>\\1 !</div>",'<div>contenu</div><div>contenu</div>');
    Mais les PCRE suivante ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    echo preg_replace('`<div>(.+?)</div>`','<div>$1 !</div>','<div>contenu</div><div>contenu</div>');
     
    ou
     
    echo preg_replace('`<div>(.+)</div>`U','<div>$1 !</div>','<div>contenu</div><div>contenu</div>');
     
    et même
     
    echo preg_replace('`<div>(.+)</div>`','<div>$1 !</div>','<div>contenu</div><div>contenu</div>');
    Est il possible de rendre l'expression POSIX non gourmande ? Ou si quelqu'un a une idée de pourquoi ca ne marche pas en PCRE quand il y a beaucoup de contenu HTML ?

    Merci

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par Cr@zyDeep
    Mais les PCRE suivante ne fonctionne pas
    A détailler

    Pour les fonctions POSIX et PCRE, on peut remplacer .* et .+ respectivement par .*? et .+? pour supprimer le caractère gourmand de l'expression, comme l'a précédemment indiqué mon collègue mathieu. Les expressions PCRE, offre "en plus" le flag U pour inverser cette tendance mais si vous utilisez .*? comme .+? en plus, l'expression redeviendra gourmande.


    Julp.

Discussions similaires

  1. [EXP] Evaluation dans une expression régulière
    Par SergentHeinz dans le forum Langage
    Réponses: 7
    Dernier message: 10/11/2005, 19h17
  2. Une expression réguliére
    Par BRAUKRIS dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 09/09/2005, 21h14
  3. Réponses: 6
    Dernier message: 17/08/2005, 13h38
  4. Problème sur une expression régulière
    Par Verbal-Quint dans le forum Langage
    Réponses: 6
    Dernier message: 12/11/2004, 11h54
  5. [Regex] Vérifier qu'une chaîne respecte une expression régulière
    Par PeteMitchell dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 13/05/2004, 15h22

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