Travailler avec Markdown en PHP : bibliothèques et outils
Markdown est un langage de balisage léger conçu pour formater rapidement du texte sans avoir à écrire du HTML complexe. Sur le portail éducatif PythonLib, nous sommes souvent confrontés à la tâche de convertir le balisage Markdown en HTML propre pour afficher des articles, de la documentation et des commentaires. PHP, en tant que langage serveur, propose plusieurs solutions matures pour cette tâche. Dans cet article, nous examinerons les trois bibliothèques les plus populaires, leur installation, leur utilisation de base et leurs particularités.
Pourquoi un analyseur Markdown en PHP ?
Markdown est pratique pour les auteurs de contenu, mais les navigateurs ne le comprennent pas directement. Il est donc nécessaire de convertir Markdown en HTML côté serveur. Avantages supplémentaires de l'utilisation des bibliothèques :
- Sécurité : traitement correct des balises HTML et prévention des attaques XSS.
- Flexibilité : prise en charge des extensions (tableaux, notes de bas de page, formules mathématiques).
- Performance : mise en cache des résultats et conversion rapide.
1. Parsedown — le plus simple et le plus rapide
Parsedown est une bibliothèque à classe unique qui ne nécessite aucune dépendance. Elle est idéale pour les petits projets et les débutants.
Installation
composer require erusev/parsedownExemple d'utilisation
<?phprequire_once 'vendor/autoload.php';
$Parsedown = new Parsedown();$markdown = "# Titre
Ceci est du texte **gras** et *italique*.";$html = $Parsedown->text($markdown);echo $html;?>Résultat : HTML correct avec les balises <h1>, <strong>, <em>. Parsedown échappe automatiquement les balises HTML dangereuses si elles ne font pas partie du balisage Markdown.
Configuration du mode sécurisé
$Parsedown->setSafeMode(true); // Désactive le HTML dans Markdown2. League/CommonMark — conformité à la norme
La bibliothèque de The PHP League implémente la norme officielle CommonMark. Elle prend en charge les extensions (tableaux, texte barré) et suit strictement la spécification.
Installation
composer require league/commonmarkUtilisation de base
<?phpuse League\\CommonMark\\Environment\\Environment;use League\\CommonMark\\Extension\\CommonMark\\CommonMarkCoreExtension;use League\\CommonMark\\MarkdownConverter;
$environment = new Environment();$environment->addExtension(new CommonMarkCoreExtension());$converter = new MarkdownConverter($environment);
$markdown = "| Tableau | Colonne ||---------|---------|| Cellule 1 | Cellule 2 |";$html = $converter->convert($markdown);echo $html;?>Fonctionnalités avancées
Vous pouvez ajouter des extensions supplémentaires :
use League\\CommonMark\\Extension\\Table\\TableExtension;use League\\CommonMark\\Extension\\Strikethrough\\StrikethroughExtension;
$environment->addExtension(new TableExtension());$environment->addExtension(new StrikethroughExtension());Cela permet de traiter les tableaux et le texte barré (~~texte~~).
3. cebe/markdown — une alternative légère
La bibliothèque cebe/markdown de Carsten Brandt se distingue par sa modularité. Vous pouvez utiliser uniquement les analyseurs nécessaires (par exemple, uniquement pour les listes ou les titres).
Installation
composer require cebe/markdownExemple avec l'analyseur MarkdownExtra
<?phpuse cebe\\markdown\\MarkdownExtra Aussi dans la bibliothèque
Journalisation en Go : Aperçu de la bibliothèque standard log et de ses alternatives
Zod — une bibliothèque puissante pour la validation de données en TypeScript
Travailler avec CSV en Kotlin : bibliothèques et exemples de code
Envoi de SMS en C++ avec l'API de la bibliothèque libcurl