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 :

Gestion de Tags [Fait] [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Par défaut Gestion de Tags
    Bonjour,

    J'ai créer une fonction qui me permet de gérer diverses balise personnalisé qui renverront diverses choses selon le contenu de c'est dernière.

    Voici le script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    function GestTag($content)
    {
        if(eregi(TAG_DEB,$content))
        {
            $tag = GetTagContent($content);
            $donnee = explode(" ", $tag);
            for($i=0;$i<count($donnee);$i++)
            {
                if(eregi('mod=',$donnee[$i]))
                {
                    $mod = str_replace('>','',substr($donnee[$i], 4));
                }
            }
     
            $tag = TAG_DEB.$tag.TAG_FIN;
            switch ($mod) {
                case toto
                    return str_replace($tag,toto(),$content);
                break;
                case "tata":
                    return str_replace($tag,tata(),$content);
                break;
            }
        }
        return $content;
    }
    Pour donner un exemple :
    Prenons TAG_DEB = "<nono " et TAG_FIN = "</nono>"

    Alors en plaçant dans notre contenu "<nono mod=tata></nono>" sa renverra ce que renvoie la fonction tata().


    Bon voila pour le fonctionnement. Mon problème et que je souhaiterais pouvoir gérer toutes les balises du contenu car la contrainte dans ma fonction c'est qu'il ne gérera qu'une balise par contenu.
    Exemple si je met :
    "<nono mod=tata></nono>"
    Et plus loin dans le contenu :
    "<nono mod=toto></nono>"

    Il ne me gérera que le premier et le 2ème pas.

    Donc j'aurais voulu savoir, si quelqu'un serait comment je pourrais faire pour qu'il gère tout ?


    Merci beaucoup d'avance pour votre aide^^

    Bonne journée

  2. #2
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    Tu pourrais essayer d'utiliser preg_replace_callback, par exemple :
    http://g-rossolini.developpez.com/tu...=page_3#LIII-6

  3. #3
    Membre expérimenté Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Par défaut
    A merci beaucoup je connaissais pas ctte fonction jpense que sa devrais bien m'aider.

    Merci encore jvais me pencher dessus

  4. #4
    Membre expérimenté Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Par défaut
    J'ai pu regarder, mais sa change rien à mon problème.
    Si sa marche pour tout le contenu dans l'exemple, c'est parce que chaque partie ou il y a une balise à traiter est déjà prédéfinit dans un tableau donc forcément sa revient à ce que j'ai fait vu que eux également ils ne peuvent traiter qu'une balise à la fois.

    Par rapport à l'exemple si on mettait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $subjects[] = 'expression régulière expression [colour="green"]régulière[/color]';
    Le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [colour="green"]régulière[/color]
    ne serait pas gérer yaurais que le bleu de gérer.

    Donc en faite je reste au même endroit dans mon problème^^"

  5. #5
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Si, ça fonctionne. Ci-dessous l'exemple du cours un peu modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <?php
    function color_string($match)
    {
        switch($match[1])
        {
            case "red":
                $new_color = "#FF0000";
                break;
            case "green":
                $new_color = "#00FF00";
                break;
            case "blue":
                $new_color = "#0000FF";
                break;
            default:
                $new_color = NULL;
                break;
        }
     
        if($new_color)
        {
            return '<font color="'.$new_color.'">'.$match[2].'</font>';
        }
        else
        {
            return $match[2];
        }
    }
     
    $pattern  = '#\[colou?r="([a-z]+)"\](.*)\[/colou?r\]#U';
     
     
    $subject = 'expression [colour="blue"]régulière[/colour]
    expression [colour="green"]régulière[/colour]
    expression [colour="red"]régulière[/colour]
    expression [colour="blue"]régulière[/colour]';
     
    $result = preg_replace_callback($pattern, "color_string", $subject);
     
    echo $result;
    Ce n'est pas ce que tu veux comme résultat ?

  6. #6
    Membre expérimenté Avatar de Gaara-Manga
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Avril 2007
    Messages : 247
    Par défaut
    A jlavais pas utilisé ainsi^^

    Merci beaucoup Eusebe sa va vraiment m'aider pour avancer

    Bon bah la c'est résolu du coup

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/04/2011, 14h04
  2. Gestion des tag html
    Par pc152 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 31/05/2009, 21h19
  3. Gestion des tags MP3 avec des espaces par interface graphique
    Par figarojuju dans le forum GTK+ avec Python
    Réponses: 2
    Dernier message: 17/11/2008, 11h01

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