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 :

Expression régulière. Ca semble bête et pourtant je bloque :/


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 88
    Par défaut Expression régulière. Ca semble bête et pourtant je bloque :/
    Bonjour !

    Alors mon problème c'est que j'ai un morceau de page HTML constituée comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $texte =
    ' Bla bla bla bla
    <div id="categorie">un texte qui a une longueur variable et donc qui peut changer</div>
    <div>Encore du texte</div>
    <div>Et encoooore du texte</div>
    hahahahaha ';

    J'aimerai supprimer la div dont l'id est "catégorie" ainsi que son contenu. Donc j'ai testé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace  (  '/(<div id="categorie">)(.)+(<\/div>)/i'  ,  ""  ,  $texte );

    Le problème c'est qu'il ne comprend pas qu'il faut s'arréter à la fin de la première Div et il me supprime donc tout jusqu' à la dernière Div contenue dans la variable $texte.

    Autrement dit quand je fais un echo de ma variable il reste: "Bla bla bla bla hahahahaha"
    alors que j'aimerai que ma variable contienne : "Bla bla bla bla <div>Encore du texte</div><div>Et encoooore du texte</div>hahahahaha"

    Pouvez vous m'aider s'il vous plait ?
    Je suis certain que c'est facile mais je ne trouve pas :/


    Merci d'avance

  2. #2
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace('%(<div id="categorie">.+?</div>)%i', '', $texte);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 88
    Par défaut
    Merci beaucoup !

  4. #4
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    C'est la présence du signe ? qui rend la recherche moins "gloutonne".

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 88
    Par défaut
    Comment ca ?

    Ah j en profite pour te demander.
    Si je veux faire l'inverse comment dois je faire ?
    C'est à dire, si je veux garder le contenu de la balise "catégorie"...

    Je fais ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ereg ('%(<div class=catégorie">.+?<\/div>)%i', $texte, $regs);
    echo $regs[1];
    Je suis un peu sceptique :s

  6. #6
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Le signe ? permet de s'arrêter au premier </div> trouvé.

    Pour garder le contenu de la balise "categorie", nous ne capturons que lui
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace('%<div id="categorie">(.+?)</div>%', '$1', $texte)
    ainsi, $1 contient uniquement les caractères (.+?) situés entre <div id="categorie"> et </div>.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 88
    Par défaut
    Citation Envoyé par Eric2a Voir le message
    Le signe ? permet de s'arrêter au premier </div> trouvé.

    Pour garder le contenu de la balise "categorie", nous ne capturons que lui
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace('%<div id="categorie">(.+?)</div>%', '$1', $texte)
    ainsi, $1 contient uniquement les caractères (.+?) situés entre <div id="categorie"> et </div>.


    Es tu certain que c'est preg_replace ? J'aurai plutot pensé à ereg.

Discussions similaires

  1. [RegEx] expression régulière qui marche pas et pourtant
    Par bigs3232 dans le forum Langage
    Réponses: 6
    Dernier message: 19/03/2010, 18h29
  2. Réponses: 1
    Dernier message: 04/05/2009, 09h31
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 11h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 19h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 16h21

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