league/commonmark est un analyseur PHP Markdown hautement extensible créé par Colin O'Dell qui prend en charge la spécification complète CommonMark et GitHub-Flavored Markdown. Il est basé sur l'implémentation de référence CommonMark JS par John MacFarlane (@jgm).
Ce projet nécessite PHP 7.4 ou supérieur avec l'extension mbstring
. Pour l'installer via Composer, exécutez simplement :
$ le compositeur nécessite une ligue/une marque commune
La classe CommonMarkConverter
fournit un wrapper simple pour convertir CommonMark en HTML :
utilisez LeagueCommonMarkCommonMarkConverter;$converter = new CommonMarkConverter(['html_input' => 'strip','allow_unsafe_links' => false, ]);echo $converter->convert('# Hello World!');// <h1>Bonjour tout le monde !</h1>
Ou si vous souhaitez GitHub-Flavored Markdown, utilisez plutôt la classe GithubFlavoredMarkdownConverter
:
utilisez LeagueCommonMarkGithubFlavoredMarkdownConverter;$converter = new GithubFlavoredMarkdownConverter(['html_input' => 'strip','allow_unsafe_links' => false, ]);echo $converter->convert('# Hello World!');// <h1>Bonjour tout le monde !</h1>
Veuillez noter que seuls les encodages UTF-8 et ASCII sont pris en charge. Si votre Markdown utilise un encodage différent, veuillez le convertir en UTF-8 avant de l'exécuter via cette bibliothèque.
Prudence
Si vous envisagez d'analyser des entrées non fiables d'utilisateurs, veuillez envisager de définir les options html_input
et allow_unsafe_links
selon l'exemple ci-dessus. Voir https://commonmark.thephpleague.com/security/ pour plus de détails. Si vous choisissez également d'autoriser la saisie HTML brute provenant d'utilisateurs non fiables, envisagez d'utiliser une bibliothèque (telle que HTML Purifier) pour fournir un filtrage HTML supplémentaire.
Une documentation complète sur l'utilisation avancée, la configuration et la personnalisation est disponible sur commonmark.thephpleague.com.
Des informations sur la façon de mettre à niveau vers des versions plus récentes de cette bibliothèque sont disponibles sur https://commonmark.thephpleague.com/releases.
Le GithubFlavoredMarkdownConverter
présenté précédemment est un remplacement instantané du CommonMarkConverter
qui ajoute des fonctionnalités supplémentaires trouvées dans la spécification GFM :
Liens automatiques
HTML brut non autorisé
Barré
Tableaux
Listes de tâches
Consultez la documentation des extensions pour plus de détails sur la façon d'inclure uniquement certaines fonctionnalités de GFM si vous ne les souhaitez pas toutes.
GâteauPHP 3
Drupal
Laravel 4+
Chabot
Symfony 2 et 3
Symfony 4
Extension Twig Markdown
Filtre et balise de brindille
Blog Laravel CommonMark
Consultez notre documentation sur les extensions pour une liste complète des extensions fournies avec cette bibliothèque.
Les analyseurs/rendeurs personnalisés peuvent être regroupés dans des extensions qui étendent CommonMark. En voici quelques-uns qui pourraient vous intéresser :
Extension Emoji - Extension emoji UTF-8 avec balise Github.
Extensions Sup Sub - Ajoute la prise en charge de l'exposant et de l'indice (balises HTML <sup>
et <sub>
)
Extension iframe YouTube - Remplace le lien YouTube par iframe.
Extension Lazy Image - Ajoute diverses options pour le chargement paresseux des images.
Extension de marqueur - Ajoute la prise en charge du texte en surbrillance (balise HTML <mark>
)
D'autres peuvent être trouvés sur Packagist sous le type de package commonmark-extension
.
Si vous créez le vôtre, n'hésitez pas à soumettre un PR pour l'ajouter à cette liste !
Découvrez les autres choses sympas que les gens font avec league/commonmark
: https://packagist.org/packages/league/commonmark/dependents
SemVer est suivi de près. Les versions mineures et les correctifs ne doivent pas introduire de modifications majeures dans la base de code ; cependant, ils peuvent modifier la sortie AST ou HTML résultante du Markdown analysé (en raison de corrections de bugs, de modifications de spécifications, etc.). En conséquence, vous pouvez obtenir un code HTML légèrement différent, mais tout code personnalisé intégré à cette bibliothèque devrait toujours fonctionner correctement.
Toutes les classes ou méthodes marquées @internal
ne sont pas destinées à être utilisées en dehors de cette bibliothèque et sont sujettes à des modifications avec rupture à tout moment, veuillez donc éviter de les utiliser.
Lorsqu'une nouvelle version mineure (par exemple 2.0
-> 2.1
) est publiée, la précédente ( 2.0
) continuera à recevoir des corrections de bogues de sécurité et critiques pendant au moins 3 mois.
Lorsqu'une nouvelle version majeure est publiée (par exemple 1.6
-> 2.0
), la précédente ( 1.6
) recevra des corrections de bugs critiques pendant au moins 3 mois et des mises à jour de sécurité pendant 6 mois après la sortie de cette nouvelle version.
(Cette politique peut changer à l'avenir et des exceptions peuvent être faites au cas par cas.)
Une assistance professionnelle, y compris la notification des nouvelles versions et des mises à jour de sécurité, est disponible via un abonnement Tidelift.
Pour signaler une vulnérabilité de sécurité, veuillez utiliser le contact de sécurité Tidelift. Tidelift coordonnera le correctif et la divulgation avec nous.
Si vous rencontrez un bug dans la spécification, veuillez le signaler au projet CommonMark. Tout correctif résultant sera éventuellement également implémenté dans ce projet.
Les contributions à cette bibliothèque sont les bienvenues , en particulier celles qui :
Améliorer la convivialité ou la flexibilité sans compromettre notre capacité à adhérer à la spécification CommonMark
Corrections miroir apportées à l'implémentation de référence
Optimiser les performances
Résoudre les problèmes liés au respect de la spécification CommonMark
Une refactorisation majeure de la logique d'analyse de base doit être évitée si possible afin que nous puissions facilement suivre les mises à jour apportées à l'implémentation de référence. Cela étant dit, nous considérerons absolument les changements qui ne s'écartent pas trop de la spécification de référence ou qui sont favorisés par d'autres implémentations CommonMark populaires.
Veuillez consulter CONTRIBUER pour plus de détails.
$ test du compositeur
Cela testera également la ligue/la marque commune par rapport à la dernière spécification prise en charge.
Vous pouvez comparer les performances de league/commonmark à celles d'autres analyseurs populaires en exécutant l'outil de référence inclus :
$ ./tests/benchmark/benchmark.php
Ce code était à l'origine basé sur l'implémentation de référence CommonMark JS qui est écrite, maintenue et protégée par les droits d'auteur de John MacFarlane. Ce projet n'existerait tout simplement pas sans son travail.
Et un immense merci à tous nos incroyables contributeurs :
Nous souhaitons également exprimer nos sincères remerciements aux sponsors suivants qui soutiennent le développement continu de ce projet :
Tidelift pour avoir offert une assistance aux responsables et aux utilisateurs finaux via son programme de support professionnel
Blackfire pour avoir fourni un abonnement Open-Source Profiler
JetBrains pour avoir soutenu ce projet avec des licences PhpStorm gratuites
Êtes-vous intéressé à parrainer le développement de ce projet? Voir https://www.colinodell.com/sponsor pour une liste des façons de contribuer.
league/commonmark est sous licence BSD-3. Voir le fichier LICENSE
pour plus de détails.
Ce projet est principalement maintenu par Colin O'Dell. Les membres de l'équipe de direction de la Ligue PHP peuvent occasionnellement contribuer à certaines de ces tâches.
Ce projet est utilisé par Drupal, Laravel Framework, Cachet, Firefly III, Neos, Daux.io, et plus encore !
Bénéficiez d'une assistance professionnelle pour la ligue/commonmark avec un abonnement Tidelift
Tidelift contribue à rendre l'open source durable pour les responsables tout en offrant aux entreprises
des assurances concernant la sécurité, la maintenance et les licences pour leurs dépendances.