[RESOLU] wikini

Eléphanteau du PHP | 26 Messages

03 sept. 2022, 19:04

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

03 sept. 2022, 19:58

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
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 26 Messages

03 sept. 2022, 21:16

non mon client veut absolument ça

Eléphanteau du PHP | 26 Messages

03 sept. 2022, 21:17

par contre c'est pas [! et !] désolé mais [| et |]

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

04 sept. 2022, 12:53

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
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Mammouth du PHP | 1609 Messages

04 sept. 2022, 13:14

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:
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 26 Messages

04 sept. 2022, 19:50

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