Pourquoi ma regex ne marche pas ???

Fermé
gaara_40 Messages postés 94 Date d'inscription mardi 2 septembre 2008 Statut Membre Dernière intervention 10 juin 2010 - 5 nov. 2008 à 22:17
gaara_40 Messages postés 94 Date d'inscription mardi 2 septembre 2008 Statut Membre Dernière intervention 10 juin 2010 - 6 nov. 2008 à 20:55
Salut, ça fait une plombe que je cherche et je n'ai pas réussi à trouver une réponse.
Je voudrais une regex qui quand y'a écrit par exemple :
[color="green"] mon texte [/color]
ça me le remplace par ça : mon texte (en vert).

Vous allez me dire que je suis vraiment un abrutit mais je n'arrive pas à faire digérer les guillemets à ma regex.

Voilà mon code PHP :
$donnees = preg_replace('#\[color="(silver|grey|maroon|lime|navy|aqua|teal|fuchsia|red|green|blue|yellow|purple|olive)"\](.+)\[/color/]#isU', '<span style="color:$1">$2</span>', $donnees);

(je sais pas trop ce qui se passe avec mon code, mon message ne s'affiche pas tout à fait comme je le veux mais j'espère que mon code reste lisible, les truc qui se colore en bleu comme les liens, vous les remplacez par [slash color])

C'est ces guillemets (en gras) qui me pourrissent la vie.
S'il vous plait, aidez-moi. Je commence vraiment à désespérer :(

Merci d'avance pour vos réponses

3 réponses

gaara_40 Messages postés 94 Date d'inscription mardi 2 septembre 2008 Statut Membre Dernière intervention 10 juin 2010 3
5 nov. 2008 à 22:30
PS : Pas la peine de me dire qu'il faut rajouter un antislash devant les guillemets. Déjà essayé et ça marche pas.
0
La Viande Messages postés 50 Date d'inscription lundi 3 novembre 2008 Statut Membre Dernière intervention 9 mars 2009
6 nov. 2008 à 01:20
Salut,

Utilise les balises code pour que l'on puisse voir ton code sans qu'il soit tronqué.
Le premier soucis que je vois, c'est ce genre de truc:
(silver|grey....

Ca, ça signifie "silve" suivi de r ou g, suivi de rey ...
Si tu veux silver ou grey, alors il faut que tu aies: (silver)|(grey)
Pour la suite il faut que je voie l'expression non tronquée, donc avec les balises code.
0
gaara_40 Messages postés 94 Date d'inscription mardi 2 septembre 2008 Statut Membre Dernière intervention 10 juin 2010 3
6 nov. 2008 à 20:55
$donnees = preg_replace('#\[color="(silver|grey|maroon|lime|navy|aqua|teal|fuchsia|red|green|blue|yellow|purple|olive)"\](.+)\/color/#isU', '<span style="color:$1">$2</span>', $donnees);


J'ai pas très bien compris ce que tu voulais dire par utiliser les balises de code, j'espère que le code est plus lisible comme ça.

Par contre, j'ai essayé comme tu m'as dis (silver)|(grey) ... et ça ne marche toujours pas :(
0