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 :

Récupérer la valeur à l'intérieur d'un tag [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Points : 177
    Points
    177
    Par défaut Récupérer la valeur à l'intérieur d'un tag
    Bonjour,

    J'aurais besoin de parser un tag {youtube}{/youtube} dans un texte afin de récupérer la valeur
    qui se trouve à l'intérieur.
    J'ai essayer ceci mais ça ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $code = preg_replace('#^.*\{youtubejw.*\}(.+)\{/youtubejw\}.*?#','$1', $text);
    Quelqu'un pourrait-il m'aider ?

    Merci.

  2. #2
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Salut,

    Pourrais-tu ecrire le contenu de ton tag ?

    A la vue de ce que tu proposes, j'ecrirai plutot cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $code = preg_replace('#\{youtubejw[^\}]*\}([^\{]+)\{/youtubejw\}#','$1', $text);
    L'idée est de prendre tout saufe l'accolade fermante pour le tag, et tout sauf l'accolade ouvrante pour le contenu du tag.
    Par contre, je ne crois pas que l'echapement des accolades soit necessaire dans les crochets.

    Z.

  3. #3
    Membre habitué Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Points : 177
    Points
    177
    Par défaut
    Voici plus précisément ce que je veux faire, c'est à dire localiser/parser
    le tag à l'intérieur d'un texte, puis récupérer sa valeur (ici en
    l'occurence: oYgN0sz53fI) dans une variable.
    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ... texte texte texte {youtubejw width="300" height="220"}oYgN0sz53fI{/youtubejw} texte texte texte...
    Quelqu'un aurait une idée ?

  4. #4
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    mon regex est bon, mais il faut utiliser la fonction preg_match, c'est mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $texte = 'te texte {youtubejw width="300" height="220"}oYgN0sz53fI{/youtubejw} texte te';
    $code = preg_match('#\{youtubejw[^\}]*\}([^\{]+)\{/youtubejw\}#',$texte, $matches);
    print_r($matches);
    ?>

  5. #5
    Membre habitué Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Points : 177
    Points
    177
    Par défaut
    Merci pour ta réponse, ça marche.

    J'ai également essayé avec ma version:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    preg_match('#\{youtubejw.*\}(.+)\{/youtubejw\}#', $text, $matches);
    echo $matches[1];
    et ça fonctionne aussi.
    Ceci dit je ne sais pas laquelle des 2 versions est la plus efficace.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 167
    Points : 186
    Points
    186
    Par défaut
    Ce sont les fonctions qui sont différentes plutôt. Du moins je pense.
    preg_match() recherche les occurences et preg_replace() remplace les occurences

    Regarde sur php.net, je pense que tu pourras trouver la vrai différence.



    Doki

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

Discussions similaires

  1. Récupérer la valeur d'un tag jsp dans une variable Java
    Par Nitroman_70 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 05/08/2010, 09h33
  2. récupérer la valeur du 2ème champ dans un DBLookUpListBox
    Par jakouz dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/07/2004, 16h45
  3. Réponses: 2
    Dernier message: 03/06/2004, 08h32
  4. [Couleur] Récupérer les valeurs R,V,B et L,U,V ?
    Par M4v3rick dans le forum C++Builder
    Réponses: 4
    Dernier message: 25/01/2004, 03h28
  5. récupérer la valeur de sortie d'un thread
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2002, 11h28

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