JeuWeb - Crée ton jeu par navigateur

Version complète : Problème BBcode
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Pages : 1 2 3
Bonjour, il se trouve que j'ai un problème avec mon BBcode ( plus précisément la partie code en couleur ).
Voici mon code :
Code PHP :
<?php 
$html
=& new GeSHi("$1","html4strict");
$php =& new GeSHi("$1","php");
$asp =& new GeSHi("$1","asp");
$batch =& new GeSHi("$1","batch");
$perl =& new GeSHi("$1","perl");
$python =& new GeSHi("$1","python");
$delphi =& new GeSHi("$1","delphi");
$js =& new GeSHi("$1","javascript");
$xml =& new GeSHi("$1","xml");
$chaine = preg_replace('/\[quote\](.+?)\[\/quote\]/', '"<sup style="border: 1px dashed #9a2500; background-color: #000030; color: #9a2500;">&nbsp;$1&nbsp;</sup>"', $chaine);
$chaine = preg_replace('/\[html\](.+?)\[\/html\]/', $html->parse_code(), $chaine);
$chaine = preg_replace('/\[php\](.+?)\[\/php\]/', $php->parse_code(), $chaine);
$chaine = preg_replace('/\[asp\](.+?)\[\/asp\]/', $asp->parse_code(), $chaine);
$chaine = preg_replace('/\[batch\](.+?)\[\/batch\]/', $batch->parse_code(), $chaine);
$chaine = preg_replace('/\[perl\](.+?)\[\/perl\]/', $perl->parse_code(), $chaine);
$chaine = preg_replace('/\[python\](.+?)\[\/python\]/', $python->parse_code(), $chaine);
$chaine = preg_replace('/\[delphi\](.+?)\[\/delphi\]/', $delphi->parse_code(), $chaine);
$chaine = preg_replace('/\[js\](.+?)\[\/js\]/', $js->parse_code(), $chaine);
$chaine = preg_replace('/\[xml\](.+?)\[\/xml\]/', $xml->parse_code(), $chaine);

Et lorsque je teste ma messagerie, et bien... il ne s'affiche rien à par le texte normal.
Je crois que cela viens du fait que, lorsque j'enregistre le message dans ma bdd, j'utilise :
Code PHP :
<?php 
mysql_escape_string
(htmlspecialchars

Y a t-il un moyen de résoudre ce problème sans avoir à retirer mes protections ?
Tu fait d'abord ton htmlspecialchars pour être sur que l'utilisateur n'as pas mis de saloperies.

Et c'est seulement après que tu passe ton BBCode. Car ton bbcode va produire de l'html, donc si tu le fait passer par un htmlentities, qui est justement une fonction "anti-html", forcement ca bloque.

En gros, tu laisse ta protection, tu la met juste plus tôt.
si c'est pas çà je pense qu'il faudra mettre un peu plus de chose car on ne peut pas deviner le code des objets qui sont utilisés...
Je n'ai pourtant pas mi de htmlentities et le htmlspecialchars est utilisé AVANT le BBcode !
Alors, avez vous une solution ? Merci quand même de votre aide, mais je n'ai toujours pas trouvé...
Lorsque je remplace par :
Code PHP :
<?php 
$chaine
= preg_replace('/\[php\](.+?)\[\/php\]/', new GeSHi("$1","php")->parse_code(), $chaine);
...avec ou sans le 'new', ca me met
Citation :Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /mnt/140/sdb/1/8/0tt0k4r/BBcode.php on line 28
==> logique.

En revanche, je crois que c'est le $1 du regex qui gène dans la partie
Code PHP :
<?php 
$html
=& new GeSHi("$1","html4strict");
$php =& new GeSHi("$1","php");
$asp =& new GeSHi("$1","asp");
$batch =& new GeSHi("$1","batch");
$perl =& new GeSHi("$1","perl");
$python =& new GeSHi("$1","python");
$delphi =& new GeSHi("$1","delphi");
$js =& new GeSHi("$1","javascript");
$xml =& new GeSHi("$1","xml");

Vu que php le compte commence du texte au lieu de ce qui doit être remplacé. Là, j'ai plus d'idées :non: :non:
Ne connaissant pas ton système, est-ce que tu pourrait faire tourner un test pour moi?

Code PHP :
<?php 
$chaine
= [quote]Boudibouda di boudi da ba[/quote];
echo
'Avant le passage dans le BBCode: "'.$chaine.'" <br />';

Ensuite tu passe $chaine dans ton BBCode, puis:
Code PHP :
<?php 
echo 'Après le passage dans le BBCode: "'.$chaine.'" <br />';

Si on a bien le résultat attendue sur le second echo, le problème vient bien de l'enregistrement en base de données, si on a pas notre résultat sur le echo, alors le problème vient de ton BBCode.
En fait le 'quote' ca marche, mais c'est le code (html, php, batch,etc...) que je n'arrive pas à faire fonctionner car le $1, au lieu d'être considéré comme ce qu'il reste et le reste à remplacer, il le considère comme du simple texte, vu qu'il doit avoir les guillements "".
Tu pourrais faire un echo $html->parse_code(); qu'on sache ce que çà donne, histoire de pas chercher complètement à coté du vrai problème?
Si je fais echo $php->parse_code, ca me met $1 en colorié php. En revanche, ca marche bien à l'extérieur du bbcode.

exemple ici : http://0tt0k4r.free.fr/zxml.php
Bon je viens de comprendre le problème.

C'est un problème de construction:
Code PHP :
<?php 
$chaine
= preg_replace('/\[php\](.+?)\[\/php\]/', new GeSHi("$1","php")->parse_code(), $chaine);

Ben là en fait la chaine $1 est traité par ton objet GeSHi , et ensuite seulement $1 est remplacé par ce qui est contenue dans les parenthèses (.+?). Du coup forcement ce contenue n'est pas formaté par l'objet GeSHi...

J'étais complètement en train de chercher à coté, mais là c'est évident.
Si tu avais lu ce message,
Valter a écrit :Je n'ai pourtant pas mi de htmlentities et le htmlspecialchars est utilisé AVANT le BBcode !
Alors, avez vous une solution ? Merci quand même de votre aide, mais je n'ai toujours pas trouvé...
Lorsque je remplace par :
Code PHP :
<?php 
$chaine
= preg_replace('/\[php\](.+?)\[\/php\]/', new GeSHi("$1","php")->parse_code(), $chaine);
...avec ou sans le 'new', ca me met
Citation :Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /mnt/140/sdb/1/8/0tt0k4r/BBcode.php on line 28
==> logique.

En revanche, je crois que c'est le $1 du regex qui gène dans la partie
Code PHP :
<?php 
$html
=& new GeSHi("$1","html4strict");
$php =& new GeSHi("$1","php");
$asp =& new GeSHi("$1","asp");
$batch =& new GeSHi("$1","batch");
$perl =& new GeSHi("$1","perl");
$python =& new GeSHi("$1","python");
$delphi =& new GeSHi("$1","delphi");
$js =& new GeSHi("$1","javascript");
$xml =& new GeSHi("$1","xml");

Vu que php le compte commence du texte au lieu de ce qui doit être remplacé. Là, j'ai plus d'idées :non: :non:
...tu remarquera que j'ai déjà essayé et sans résultat :non: :non:
Pages : 1 2 3