interpréter du contenu pour le modifier (genre bbcode) oui mais ... - 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 : interpréter du contenu pour le modifier (genre bbcode) oui mais ... (/showthread.php?tid=4477) |
interpréter du contenu pour le modifier (genre bbcode) oui mais ... - Ter Rowan - 08-12-2009 hello j'ai une problématique qui doit certainement se régler facilement à coup de regex ou autres, mais n'étant pas très spécialisé dans le traitement de chaines de caractères, je ne sais pas trop comment avancer. mon besoin : je reçois un texte avec en son sein des éléments "enrichis" exemple : Citation :voici un {b}texte{/b} très intelligent qui permet de représenter ce que j'essaie d'expliquer en suivant les {ref}normes rowanesques{/ref} que j'ai pu définir imaginons que {} soit [] on se retrouve dans du bbcode classique (pour [b] ) je souhaite transformer ce texte en : Code PHP :
on constate que : [b] se transforme en <strong>, ça je sais faire : Code PHP :
par contre je souhaite que [ref]normes rowanesques[/ref] soit identifié et me permette: de remplacer dans le texte [ref]normes rowanesques[/ref] par Code PHP :
et que en fin de texte, parce que j'aurais stocké quelque part l'id 3, je puisse afficher Code PHP :
où $ref, $lib et $descr sont des tableaux indicés par la chaine à rechercher qui contiennent pour $ref l'id de l'article concerné, $lib le libellé du corps de texte à afficher et $descr la petite description qui apparaitra en fin de div. j'ai fouillé un peu sur le net, je suis tombé sur une regex qui permet quelquechose d'un peu plus simple : Code PHP :
pas très familier, je vois bien que la regex identifie du contenu, mais uniquement dans la fonction regex (je ne vois pas comment exploiter la chaine "1" trouvée par exemple) etc... vous avez une idée ? RE: interpréter du contenu pour le modifier (genre bbcode) oui mais ... - Kassak - 08-12-2009 $message = preg_replace('`\[ref\](.+)\[/ref\]`isU', '<div id="blabla">$1</div>', $message); ceci ne fonctionne pas ? remplace la div par ce que tu veux... ? RE: interpréter du contenu pour le modifier (genre bbcode) oui mais ... - Zamentur - 08-12-2009 Une piste:preg_replace_callback RE: interpréter du contenu pour le modifier (genre bbcode) oui mais ... - Ter Rowan - 08-12-2009 Merci pour vos premières réponses (08-12-2009, 04:48 PM)Kassak a écrit : $message = preg_replace('`\[ref\](.+)\[/ref\]`isU', '<div id="blabla">$1</div>', $message); le problème est que tu ne fais que remplacer un élément (enfin tel que je le comprends), pas d'obtenir l'élément et de le traiter avec intelligence => avec l'élément je dois décider si il faut mettre id="blabla" ou id="bloblo" ou ..., et modifier $1 et ajouter en fin de page des infos supplémentaires c'est ce "et" que je n'arrive pas à faire, mais peut être ai je mal compris (08-12-2009, 04:53 PM)Zamentur a écrit : Une piste:preg_replace_callback c'est peut être la bonne piste, en tout cas ça pourrait y ressembler ^^ il faut que je teste cela, merci RE: interpréter du contenu pour le modifier (genre bbcode) oui mais ... - Gabriel - 08-12-2009 J'ai fais ceci pour mon système de chat :
Tout tient en une ligne RE: interpréter du contenu pour le modifier (genre bbcode) oui mais ... - Ter Rowan - 09-12-2009 (08-12-2009, 04:53 PM)Zamentur a écrit : Une piste:preg_replace_callback je suis embêté (pas encore essayé mais je tape du code sans avoir php au bureau là...) en effet j'aimerai que la fonction appelée soit une méthode de classe mais comment faire ? Code PHP :
ce code pourrait marcher ? en tout cas, si cela marche , la solution me conviendrait sinon, il faudrait que je parte sur du procédural, avec des variables statiques dans tous les sens (enfin deux ^^), beurk quoi :p et puis je me lance tiens (boulot pas top aujourd'hui ^^) il est possible qu'il y ait quelques fautes de syntaxe, je ne pourrais valider que cette nuit mais qu'en pensez vous ? Code PHP :
RE: interpréter du contenu pour le modifier (genre bbcode) oui mais ... - QuentinC - 09-12-2009 Passer une fonction membre en tant que fonction callback est possible, mais pas de la façon que tu proposes. En fait il faut passer un tableau qui contient en premier argument l'objet à manipuler, et en deuxième élément le nom de la méthode en tant que chaîne. Donc ici ce serait preg_replace_callback(..., array($this, 'ajouterReference'), ...) RE: interpréter du contenu pour le modifier (genre bbcode) oui mais ... - Anthor - 09-12-2009 EDIT: Autant pour moi, grosse grosse fatigue aujourd'hui ! |