JeuWeb - Crée ton jeu par navigateur
Encore une regex... - 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 : Encore une regex... (/showthread.php?tid=7107)

Pages : 1 2


RE: Encore une regex... - niahoo - 12-08-2013

je vois pas ce que ton bbcode a de spécial. Il a une syntaxe bbcode normale... La lib php ne force pas les balises, tu mets ce que tu veux comme balises et options, c'est juste un parseur.


RE: Encore une regex... - Arnadus - 12-08-2013

encore +1 pour niahoo


RE: Encore une regex... - Xenos - 12-08-2013

C'est son projet, il doit donc connaitre ses propres besoins et avoir ses propres raisons. La question porte sur les regex, pas sur le traitement d'un BBCode: y'a peut-être des informations du projet au sens large qui ne sont pas données et qui justifient le choix, ou simplement des préférences personnelles. Et puis, passer du temps à comprendre comment se servir d'une lib BBCode si c'est uniquement pour un [p]<ok/>[/p], ça ne vaut pas forcément le coup.


RE: Encore une regex... - niahoo - 12-08-2013

XD comprendre la lib ça doit prendre à tout casser une aprèm graaaaaaand maximum. Son parsing de BB code il nous en parlait déjà il y a longtemps. Mais comme je lui ai dit, "libre à toi". Réinventer la roue ce n'est pas forcément mauvais, des fois rien que pour le fun et pour comprendre comment c'est fait on réimplémente un algorithme. Ce n'est pas un problème.

Mais je doute fortement qu'il ait des contraintes relatives au BBCode qui l'empêchent d'utiliser la librairie traditionnelle. Ceci dit, c'est tout à fait plausible. En attendant , s'il a envie de passer rapidement à autre chose, à mon avis ça vaut la peine d'y passer une heure vue que la config est plutot simple (exemple tiré de la doc) :

Voir source parce que le forum bug

<?php
$arrayBBCode=array(
''=> array('type'=>BBCODE_TYPE_ROOT, 'childs'=>'!i'),
'i'=> array('type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<i>',
'close_tag'=>'</i>', 'childs'=>'b'),
'url'=> array('type'=>BBCODE_TYPE_OPTARG,
'open_tag'=>'<a href="{PARAM}">', 'close_tag'=>'</a>',
'default_arg'=>'{CONTENT}',
'childs'=>'b,i'),
'img'=> array('type'=>BBCODE_TYPE_NOARG,
'open_tag'=>'<img src="', 'close_tag'=>'" />',
'childs'=>''),
'b'=> array('type'=>BBCODE_TYPE_NOARG, 'open_tag'=>'<b>',
'close_tag'=>'</b>'),
);
$text=<<<EOF
Bold Text
Italic Text
http://www.php.net/
Content Text
[Image: php.gif]

[Image: php.gif]

EOF;
$BBHandler=bbcode_create($arrayBBCode);
echo bbcode_parse($BBHandler,$text);
?>

Non et puis c'est tout à fait en rapport avec les regex : un parseur utilise les regex, et là je présente une librairie d'abstraction des regex, c'est parfaitement dans le sujet :p

erlf normalement $text est initialisé avec du bbcode mais là le forum bug et ça affiche des span Oo ... super ..


RE: Encore une regex... - Xenos - 12-08-2013

Ca affiche des spans car le forum doit analyser le contenu du tag [ php ] et comme il y a du BBCode, il fait le remplacement... Ah làlà, ces bibliothèques mal fichues qui font plus de remplacements que nécessaire :roll:

Mais bon, t'as raison quand même, disons que les deux solutions sont acceptables: bibliothèque BBParser ou regEx toute simple. L'une peut gagner du temps, l'autre peut permettre une évolution plus souple.


RE: Encore une regex... - php_addict - 12-08-2013

(12-08-2013, 03:01 PM)niahoo a écrit : je vois pas ce que ton bbcode a de spécial. Il a une syntaxe bbcode normale... La lib php ne force pas les balises, tu mets ce que tu veux comme balises et options, c'est juste un parseur.

oui évidement ce bbcode est standard, MAIS comme je l'ai dis plus haut j'ai besoin d'autres bbcodes non conventionnels comme par exemple le bbcode [AfficheMoiCeRapportdAttaqueSTP]6556564[/AfficheMoiCeRapportdAttaqueSTP] qui n'ai pas du tout du parsing de code html, c'est bien plus que cela...et je suis pas bien certain que j'aurais trouvé mon bohneur avec la lib de php...(vous l'aurez compris je suis pas assez maso pour utiliser AfficheMoiCeRapportdAttaqueSTP, c'est un exemple)

donc comme j'ai besoin de bbcode très très spéciaux, autant faire aussi les parseurs standards à la main...

en tout cas merci, et oui parfois j'ai tendance à réinventer la roue, normal, c'est mon côté 100% autodidacte et qui aime bien comprendre les choses en profondeur, et je ne suis pas pris par le temps ni astreint à un rendement de vitesse de codage.

merci à vous


RE: Encore une regex... - Xenos - 12-08-2013

Citation :AfficheMoiCeRapportdAttaqueSTP

Oui, mais si tu utilisais vraiment un tel nom, on ne pourrait pas te reprocher de faire de l'obfuscation de code :p


RE: Encore une regex... - niahoo - 12-08-2013

(12-08-2013, 04:52 PM)Xenos a écrit : Ah làlà, ces bibliothèques mal fichues qui font plus de remplacements que nécessaire :roll:

C'est clair, ils feraient mieux d'utiliser la lib fournie avec PHP plutôt que de réinventer la roue à base de regex Smile


Quant aux trucs du style [ maMégaBalise ] 1234567 [ /maMégabalise ] ça n'a rien de spécial, tu peux très bien indiquer à la librairie la fonction que tu veux pour récupérer l'ID et si tu le souhaites généréer 40 000 lignes de HTML pour afficher un rapport d'attaque très précis ...

Installer une librairie trouvée sur github sera plus simple que d'installer l'extension PHP sur windows ceci dit (mais tu bosses sur debian je crois, dans ce cas pas de problèmes) .

fin bon pour ce que j'en dis, fais comme tu veux, et surtout bonne chance, les regex moi aussi je trouve ça sympa mais dès fois on s'arrache les cheveux Smile


RE: Encore une regex... - Xenos - 12-08-2013

[Image: regular_expressions.png]


RE: Encore une regex... - niahoo - 12-08-2013

j'ai un collègue qui ne sait *pas* ce que sont les regex ... ça fait 5 ans au moins qu'il est dev ... vu comment c'est pratique quasi-quotidiennement, ne serait-ce que pour chercher des bouts de codes dans tout un projet, il doit être méga-lent pour certains trucs !

Après c'est pas forcément évident au début mais c'est pas non plus compliqué pour la plupart des usages.