Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/06/2008, 11h57   #1
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
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 :
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
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2008, 17h36   #2
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Bonjour,

Tu pourrais essayer d'utiliser preg_replace_callback, par exemple :
http://g-rossolini.developpez.com/tu...=page_3#LIII-6
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2008, 21h30   #3
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
A merci beaucoup je connaissais pas ctte fonction jpense que sa devrais bien m'aider.

Merci encore jvais me pencher dessus
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2008, 17h00   #4
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
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 :
$subjects[] = 'expression régulière expression [colour="green"]régulière[/color]';
Le
Code :
[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^^"
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2008, 18h58   #5
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Si, ça fonctionne. Ci-dessous l'exemple du cours un peu modifié :

Code :
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 ?
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2008, 11h29   #6
Membre confirmé
 
Avatar de Gaara-Manga
 
Inscription : avril 2007
Messages : 247
Détails du profil
Informations personnelles :
Localisation : France, Vienne (Poitou Charente)

Informations forums :
Inscription : avril 2007
Messages : 247
Points : 213
Points : 213
A jlavais pas utilisé ainsi^^

Merci beaucoup Eusebe sa va vraiment m'aider pour avancer

Bon bah la c'est résolu du coup
Gaara-Manga est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h51.


 
 
 
 
Partenaires

Hébergement Web