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 :

problème fonction preg_match_all() [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de alejandro
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2004
    Messages : 167
    Points : 188
    Points
    188
    Par défaut problème fonction preg_match_all()
    Bonjour

    J'ai un problème avec une utilisation de la fonction preg_match_all(), je m'explique :

    j'ai un contenu avec des balises de type
    <!-- BEGIN xxxx --> et <!-- END xxxx -->

    je fais un premier preg_match_all qui fonctionne pour récupérer toutes
    mes balises BEGIN :
    preg_match_all('#<!-- BEGIN (.*?) -->#', self::$content, $temp);

    ça marche.
    j'en déduis les balises de fermeture en faisant un ereg_replace :
    ereg_replace('BEGIN', 'END', $value));

    enfin j'essaie de récupérer le contenu de ces balises situé entre
    <!-- BEGIN xxxx --> et <!-- END xxxx -->

    exemple en dur avec :
    preg_match_all('#<!-- BEGIN LOOP -->(.*?)<!-- END LOOP -->#', self::$content, $buffer);

    et là ça marche pas ????

    quelqu'un peut m'aider je pense que c'est dans mon expression régulière.

    Merci d'avance

  2. #2
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Citation Envoyé par alejandro
    j'en déduis les balises de fermeture en faisant un ereg_replace :
    ereg_replace('BEGIN', 'END', $value));
    Je comprend pas bien ce que tu veux dire par "j'en déduis les balises de fermeture", toujours est-il que ton ereg_replace ne déduis rien du tout mais remplace 'BEGIN' par 'END' dans $value...
    Le problème est peut être là...

    Si ce que tu veux faire c'est trouver le 'END' à la fin de $value, utilise plutôt ereg()

  3. #3
    Membre habitué Avatar de alejandro
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2004
    Messages : 167
    Points : 188
    Points
    188
    Par défaut
    désolé pour le post, je vais essayer de faire simple :

    j'essaie de récupérer un contenu situé entre les balises suivantes :

    <!-- BEGIN LOOP --> et <!-- END LOOP -->

    voilà tout simplement et ma ligne

    preg_match_all('#<!-- BEGIN LOOP -->(.*?)<!-- END LOOP -->#', self::$content, $buffer);

    ne marche pas.

    Merci d'avance

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 30
    Points : 26
    Points
    26
    Par défaut
    au lieu de (.*?)
    essaie avec ([^<]*)
    => tout ce qui n'est pas une balise ouvrante

  5. #5
    Membre habitué Avatar de alejandro
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2004
    Messages : 167
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par zobsystem
    au lieu de (.*?)
    essaie avec ([^<]*)
    => tout ce qui n'est pas une balise ouvrante
    Non désolé ça marche pas ... mais mon contenu est une page contenant du code html donc des balises y en a plein. Il me faut absolument récupérer le contenu de balises de type <!-- BEGIN LOOP --> ***ici mon contenu *** <!-- END LOOP --> et mon preg_match_all ne fonctionne pas

  6. #6
    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 778
    Points
    17 778
    Par défaut
    Vous avez certainement besoin d'options, notamment s, pour que le métacaractère . inclue les sauts de ligne (ce n'est pas le cas par défaut) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('#<!-- BEGIN ([[:alnum:]]+) -->(.*?)<!-- END \1 -->#s', self::$content, $buffer);

  7. #7
    Membre habitué Avatar de alejandro
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2004
    Messages : 167
    Points : 188
    Points
    188
    Par défaut
    Respects Maestro, c'était ça, le petit s à la fin qui fait que le '.' prend en compte les sauts de ligne. Merci encore je n'aurais pas trouvé.


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

Discussions similaires

  1. Problème : Fonctions et commande Execute
    Par bubi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/11/2005, 11h01
  2. Problème fonction SDL
    Par seeme dans le forum SDL
    Réponses: 2
    Dernier message: 06/11/2005, 20h22
  3. Problème fonction PL/SQL
    Par SSJ17Vegeta dans le forum PL/SQL
    Réponses: 2
    Dernier message: 29/10/2005, 21h14
  4. Problème fonction et trigger sous 7.2
    Par anoukhan dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/06/2005, 22h53
  5. Réponses: 2
    Dernier message: 20/08/2004, 17h10

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