Page 1 sur 1

[size=12] affiché correctement

Posté : 14 juil. 2007, 19:36
par Dom!
Bonjour à tous !

Dans ma base de donnée il est inscrit ["size=12"] Bonjour à tous["/size"] comme sur ce forum. Comment lors de l'affichage du message mettre le texte en taille 12 et effacer [size] ??

Merci pour votre aide.

Posté : 14 juil. 2007, 20:07
par Hubert Roksor
Pour le forum c'est facile, c'est phpBB qui le fait.

Posté : 14 juil. 2007, 20:09
par Dom!
Oui mais comment le faire dans ma page... ?

Merci

Posté : 14 juil. 2007, 22:18
par Truc

Posté : 15 juil. 2007, 16:07
par Dom!
Merci pour la réponse !

J'ai écrit ca :
$text = preg_replace("/\[color=(.*?)\](.*?)\[\/color\]/i", "<font color=\"\\1\">\\2</font>", $text);
            $text = preg_replace("/\[size=(.*?)\](.*?)\[\/size\]/i", "<font size=\"\\1\">\\2</font>", $text);
            $text = preg_replace("/\[font=(.*?)\](.*?)\[\/font\]/i", "<font face=\"\\1\">\\2</font>", $text);
            $text = preg_replace("/\[align=(.*?)\](.*?)\[\/align\]/i", "<p align=\"\\1\">\\2</p>", $text);
et n'y la couleur n'y la taille ne changent...

Ensuite j'ai modifié et voici ce que j'ai écrit :
 $text = preg_replace('`\[size=(.*?)\](.*?)\[\/size\]`i', '<font size=\"\\1\">\\2</font>', $text);
		 $text = preg_replace('/\[color=(.*?)\](.*?)\[\/color\]/i', '<font color=\"\\1\">\\2</font>', $text);
		// $text = preg_replace('`\[color=(.*?)\](.*?)\[\/color\]`i', '<font color=\"\\1\">\\2</font>', $text);
		 $text = preg_replace('/\[font=(.*?)\](.*?)\[\/font\]/i', '<font face=\"\\1\">\\2</font>', $text);
et la !! la taille change mais la couleur ne correspond pas au code couleur.

exemple : color=#8B0000 cette couleur est bordeau mais avec mon code c'est vert.

Savez vous pourquoi ?
Merci

Posté : 15 juil. 2007, 17:14
par @rthur
Bonjour,

Regarde ke code HTML généré, ça te donnera sûrement des pistes pour débuguer...

Posté : 16 juil. 2007, 11:22
par thehawk
tient j'ai toujours penser qu'il falait faire :
preg_replace('`\[size=(.*?)\](.*?)\[\/size\]`i', '<font size=\"'.$1.'\">'.$2.'</font>', $text);
je me trompe ?

Posté : 16 juil. 2007, 12:41
par Ryle
C'est probablement parce que le pattern que tu utilises ne correspond pas à la chaine saisie dans ta base : [size=xxx] est différent de ["size=xxx"]. C'est donc normal qu'il ne le retrouve pas la chaine et ne puisse pas faire la transformation :)

Regarde également du côté de l'option "U" pour éviter le côté "gourmand" des expressions régulières : si tu as plusieurs balises size, par défaut il ne prendra en compte que la première ouvrante et la dernière fermante. Avec l'option "U" il considerera bien chaque paire trouvée.

@thehawk : les deux syntaxes peuvent être utilisées : \1 ou $1 contiennent toutes deux le premier élément capturé par les parenthèses :)

Posté : 16 juil. 2007, 12:49
par thehawk
Merci Ryle pour la precision