Page 1 sur 1

wikini

Posté : 03 sept. 2022, 19:04
par Sylvain255
Bonjour pour coder un wikini j'aurais besoin de coder des tableaux comme ceci :
[!
cellule1|cellule2|cellule3
cellule4|cellule5|cellule6
!]

il faudrait les changer en balises <td><tr><table>

merci de votre aide car je ne vois vraiment pas comment faire

Re: wikini

Posté : 03 sept. 2022, 19:58
par @rthur
Bonjour,

Je ne sais pas d'où sort la syntaxe avec [! et !] mais je serais toi, je partirai sur des syntaxes plus standard comme Markdown ou celle de Wikipedia
https://docs.framasoft.org/fr/grav/mark ... l#tableaux
https://fr.wikipedia.org/wiki/Aide:Ins% ... e,_expert)

L'avantage d'utiliser des syntaxes standard c'est qu'il y a déjà des librairies qui permettent de faire ce que tu veux sans réinventer la roue
Par exemple :
- pour Markdown : https://parsedown.org/ ou https://github.com/michelf/php-markdown
- pour la syntaxe wiki : https://github.com/laurentj/wikirenderer

Re: wikini

Posté : 03 sept. 2022, 21:16
par Sylvain255
non mon client veut absolument ça

Re: wikini

Posté : 03 sept. 2022, 21:17
par Sylvain255
par contre c'est pas [! et !] désolé mais [| et |]

Re: wikini

Posté : 04 sept. 2022, 12:53
par @rthur
Demande-lui s'il sait quel est le nom de cette syntaxe.
Car elle est très proche de celle de Wikipedia qui utilise des accolades {| et |}

Ensuite en fonction de sa réponses, 3 solutions :
- soit c'est une syntaxe existante, et il faut que tu cherches si un parser n'existe pas déjà.
- soit ça lui convient d'avoir des accolades car c'est le plus standard, et donc tu prends un parser wikipedia-like existant
- soit il veut absolument la syntaxe avec des crochets et donc tu prends un parser existant utilisant des accolades et tu modifies le fonctionnement standard pour remplacer les accolades par des crochets

Quelques pistes de parser de la syntaxe wikipedia :
https://github.com/donwilson/PHP-Wikipe ... tax-Parser
https://github.com/JohannesBuchner/medi ... er.inc.php
Le parser officiel (mais peut être un peu overkill pour ton besoin) : https://github.com/wikimedia/parsoid

Re: wikini

Posté : 04 sept. 2022, 13:14
par Saian
Salut, un truc de base est pas si compliqué que ça à faire. Par contre faut que le sujet soit bien formaté et qu'il n'y ai pas de pipe dans les cellules.

$subject = '[|
cellule1|cellule2|cellule3
cellule4|cellule5|cellule6
|]';

echo preg_replace_callback('/\[\|\s(.*?)\s\|\]/s', static function($matches): string {
    $table = ['<table>'];
    foreach (explode("\n", $matches[1]) as $line) {
        $table[] = '<tr><td>'.str_replace('|', '</td><td>', $line).'</td></tr>';
    }
    $table[] = '</table>';

    return implode("\n", $table);
}, $subject);

Je ne sais pas combien te paye ton client mais je veux bien ma part. :mrgreen:

Re: wikini

Posté : 04 sept. 2022, 19:50
par Sylvain255
bonjour je dis client mais c'est un projet bénévole ! j'avais réussi entre temps par un code à ma sauce, mais merci quand même