Problème BBcode - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Problème BBcode (/showthread.php?tid=2342) |
RE: Problème BBcode - Zamentur - 03-02-2008 Euh j'ai lu ce message et j'ai pas vu que tu avais éssayé, j'ai dit qu'il y avais un probleme de construction et que c'était forcément à cause de çà. Et d'ailleurs je vois pas ou c'est marqué clairement ? A moins que ce soit cette phrase que je n'ai pas compris au bout de 3 lecture et que je n'ai toujours pas compris: Code PHP :
Enfin bref donc là le trucs c'est qu'il faut partir sur une méthode complètement différentes puisque çà ne peut pas marcher tel quel avec preg_replace... je te suggère d'aller faire un tour sur la doc de preg_replace_callback RE: Problème BBcode - Valter - 03-02-2008 Ok, merci mais j'ai déjà vu... Je vais essayer quelquechose d'autre... RE: Problème BBcode - Zamentur - 03-02-2008 pourtant çà semble être la solution évidente au problème! Code PHP :
RE: Problème BBcode - Valter - 03-02-2008 Non car parse_code est déjà une fonction utilisée dans GeSHi... En fait, j'ai légèrement copié d'ici, si ca peut t'aider d'voir la version originale. @ l'époque je devais même pas savoir ce que ca voulais dire preg_replace RE: Problème BBcode - Zamentur - 03-02-2008 ben je continue à affirmer que c'est la solution je viens d'ailleurs de trouver un tuto du sdz qui est exactement sur le thème et ou il propose la même solution avec callback http://www.siteduzero.com/tuto-3-16163-1-creer-un-bbcode-muni-de-balises-geshi.html Et ma fonction s'appelle parse et pas parse_code et même si elle s'appelait parse_code je pense que çà passe car la fonction parse_code de Geshi est une méthode et reste donc attaché à son objet. Edit si il semble qu'il y ait un petit bug, la fonction corrigé: function parse($var){ $convert=array('html'=>"html4strict",'php'=>'php'); $couleur =& new GeSHi($var[1],$convert[$var[0]]); return $couleur->parse_code(); } RE: Problème BBcode - Valter - 03-02-2008 J'était justement en train de lire ce tuto et je ne vois pas à quoi correspond matches[2] dans : Code PHP :
RE: Problème BBcode - Zamentur - 03-02-2008 $matches c'est l'argument. Il contient les donnée renvoyer par preg_replace_callback le $matches[1] c'est la première parenthèse ("html" par exemple) et le $matches[2] la deuxième (l'expression entre les balises) C'est expliqué dans la doc d'ailleurs je viens de me rendre compte que je croyais que çà commençais à 0 (et non à 1 comme c'est le cas...) RE: Problème BBcode - Valter - 05-02-2008 Et bien tout d'abord merci pour ton aide, mais j'ai une autre question : je ne suis pas expert ( loin de là ) en regex, mais comment pourrais je procéder pour récupérer le texte qui se trouve dans le $1 ? Si, par exemple, je met : Code PHP :
J'ai pensé à preg_quote, mais si on ne connait pas la valeure ?? Merci d'avance, RE: Problème BBcode - Zamentur - 06-02-2008 Je te conseil d'aller faire un petit tour sur le tuto du sdz sur les regex (ou sur la doc si tu préfère ). Tu pourras certainement y apprendre pas mal de trucs. Bon là pour ton problème, en fait je crois que tu donnes la réponse en même temps sans le savoir! preg_replace('/\[php\](.+?)\[\/php\]/', '$1', $chaine); renvoie ce que vaut $1 (sachant que $1 c'est tout ce qui est entre parenthèse) Donc pour ta question c'est simple tu l'as ecrit $texte=preg_replace('/\[php\](.+?)\[\/php\]/', '$1', $chaine); Pour aller un peu plus loin: Si tu fait preg_replace('/\[(php)\](.+?)\[\/php\]/', '$1', $chaine); çà te renvoie "php" puisque c'est la première parenthèse Et si tu fait preg_replace('/\[(php)\](.+?)\[\/php\]/', '$2', $chaine); Ca te renvoie ce qui est entre [ php ] et [ /php ] puisque c'est la seconde parenthèse Donc si tu suis le raisonnement avec l'autre fonction preg_replace_callback: Code PHP :
la fonction parse() recevra en argument un tableaux array('1'=>"html",3 => "le texte dedans") Il te suffit donc d'appliquer l'objet Geshi qui correspond, c'est ce que fait la fonction parse : Code PHP :
Et voila parse sort normalement "le texte avantle texte dedansle texte après" la partie en gras etant mis en forme par GeSHi NB: preg_quote sert à échaper les caractère spéciaux d'une regex afin de les chercher tel quel dans la recherche. Celà dit t'étais sur la bonne voie avec l'idée d'isoler la partie à colorer, avec preg_replace_callback c'est optimisé RE: Problème BBcode - Valter - 06-02-2008 En fait, cela marche lorsque j'éxecute cette commande : Code PHP :
Error a écrit :Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /mnt/140/sdb/1/8/0tt0k4r/BBcode.php on line 18. :mauvais: Maintenant au moins, je sais dans quelle direction m'orienter :ninga: , je dois tenter d'afficher le 'parse_code' indirectement :rip: , donc sans le -> :non: :non: ____________________________________________ { environ 6 minutes plus tard } Après plusieurs tests, je trouve que : • Lorsque j'essaie Code PHP :
Citation :Parse error: syntax error, unexpected T_VARIABLE in /mnt/140/sdb/1/8/0tt0k4r/BBcode.php on line 20 • ou alors Code PHP :
donne pareil que le premier :wow2: |