expression regulière

expression regulière - PHP - Programmation

Marsh Posté le 25-03-2003 à 16:41:35    

youp,
 
 
j'essaye de transformer
 

[#225566]zearioazyriuzaye[/color]
 
en  
 
<span style="color:#225566">zearioazyriuzaye</span>


 
en faisant

Code :
  1. $body = "[225566]zearioazyriuzaye[/color]";
  2. $body = preg_replace("/\[([\#a-z0-9]+?)\]/si", "<span style=\"color: $1\">", $body);


 
 
résultat =>

<span style="color: #225566">zearioazyriuzaye[/color]


 
j'arrive pas à transformer la balise de fin :(
si quelqu'un peut m'aider...
 
 
et si quelqu'un a un bon tutorial, ca m'intéresse aussi ;)


Message édité par art_dupond le 25-03-2003 à 17:45:33

---------------
oui oui
Reply

Marsh Posté le 25-03-2003 à 16:41:35   

Reply

Marsh Posté le 25-03-2003 à 17:31:50    

J'ai pas envie de me plonger dans tes expressions régulières, mais 3 remarques :
- il doit manquer un "color=" dans ton premier encadré
- l'espace avant le "#" peut être enlevé dans l'expr reg
- le chgt pour la balise de fin peut se faire lors d'un autre appel à preg_replace (qui ne se chargera que du changement de la balise de fin)
 
Y'a des explications sur commentcamarche.net

Reply

Marsh Posté le 25-03-2003 à 17:46:14    

yep, j'ai transformé la balise de fin dans avec un autre truc, mais y a pas moyen de tout faire ensemble ?


---------------
oui oui
Reply

Marsh Posté le 25-03-2003 à 19:46:42    

Quel interêt ?
 
Si ça te fait plaisir tu feras une fonction perso qui fera les 2 opérations à la suite... ça te donnera l'impression de faire les 2 en même temps :p
 
Tu trouves pas que c'est déjà assez compliqué pour avoir envie de faire tout en même temps ?

Reply

Marsh Posté le 25-03-2003 à 20:01:31    

no mais en fait, je voulais qu'il le fasse que s'il trouve le début et la fin, pour pas laisser un tag ouvert...


---------------
oui oui
Reply

Marsh Posté le 25-03-2003 à 22:10:55    

$body = preg_replace("/\[([\#a-z0-9]+?)\](.+?)\[\/color\]/si", "<span style=\"color: $1\">\\2</span>", $body);


Message édité par skylight le 25-03-2003 à 22:12:55
Reply

Marsh Posté le 26-03-2003 à 12:24:29    

youp merci :)
 
 
 
tu pourrais me dire ce que font exactement $1 et \\2 ? je vois ce qu'ils font mais c'est pas très clair :p
 
Si tu pouvais expliquer chaque signe :jap:  

Reply

Marsh Posté le 26-03-2003 à 12:50:56    

alors
$1 est en fait ce que le php trouve dans la premiere parenthese,
 
et \\2 ce que le php trouve dans la 2°.
 
 
$1 est une facon de dire \\1
 
sachant que $1 ne marche que sur php 4.x et plus, il vaut mieux utiliser \\1 et \\2, et ainsi de suite

Reply

Marsh Posté le 26-03-2003 à 13:02:09    

ok merci, c'était la différence qui faisait que c'était pas clair
 
 
merci encore :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed