Meilleur analyseur Markdown en PHP - démo
Installez le package composer :
composer require erusev/parsedown
Ou téléchargez la dernière version et incluez Parsedown.php
$ Parsedown = new Parsedown ();
echo $ Parsedown -> text ( ' Hello _Parsedown_! ' ); # prints : < p > Hello < em > Parsedown </ em >!</ p >
Vous pouvez également analyser uniquement la démarque en ligne :
echo $ Parsedown -> line ( ' Hello _Parsedown_! ' ); # prints : Hello < em > Parsedown </ em >!
Plus d'exemples dans le wiki et dans ce didacticiel vidéo.
Parsedown est capable d'échapper aux entrées de l'utilisateur dans le code HTML qu'il génère. De plus, Parsedown appliquera une désinfection aux vecteurs de script supplémentaires (tels que les destinations de liens de script) introduits par la syntaxe markdown elle-même.
Pour indiquer à Parsedown qu'il traite des entrées utilisateur non fiables, utilisez ce qui suit :
$ Parsedown -> setSafeMode ( true );
Si, à la place, vous souhaitez autoriser le HTML dans les entrées utilisateur non fiables, tout en souhaitant que la sortie soit exempte de XSS, il est recommandé d'utiliser un désinfectant HTML qui permet d'ajouter des balises HTML à la liste blanche, comme HTML Purifier.
Dans les deux cas, vous devriez sérieusement envisager d'employer des mesures de défense en profondeur, comme le déploiement d'une politique de sécurité du contenu (une fonctionnalité de sécurité du navigateur) afin que votre page soit susceptible d'être sécurisée même si un attaquant découvre une vulnérabilité dans l'un des premiers cas. lignes de défense ci-dessus.
Le mode sans échec ne donne pas nécessairement des résultats sûrs lors de l'utilisation d'extensions pour Parsedown. Les extensions doivent être évaluées individuellement pour déterminer leur sécurité spécifique contre XSS.
AVERTISSEMENT : Cette méthode n'est pas à l'abri de XSS !
Si vous souhaitez échapper au HTML dans une entrée sécurisée, vous pouvez utiliser ce qui suit :
$ Parsedown -> setMarkupEscaped ( true );
Attention, cela permet toujours aux utilisateurs d'insérer des vecteurs de script non sécurisés, par exemple : [xss](javascript:alert%281%29)
.
Comment fonctionne l'analyse ?
Il essaie de lire Markdown comme un humain. Tout d’abord, il examine les lignes. Il s'intéresse à la façon dont les lignes commencent. Cela l'aide à reconnaître les blocs. Il sait, par exemple, que si une ligne commence par un -
alors elle appartient peut-être à une liste. Une fois qu'il reconnaît les blocs, il passe au contenu. Lors de sa lecture, il fait attention aux caractères spéciaux. Cela l'aide à reconnaître les éléments en ligne (ou inlines).
Nous appelons cette approche « basée sur les lignes ». Nous pensons que Parsedown est le premier analyseur Markdown à l'utiliser. Depuis la sortie de Parsedown, d'autres développeurs ont utilisé la même approche pour développer d'autres analyseurs Markdown en PHP et dans d'autres langages.
Est-il conforme à CommonMark ?
Il réussit la plupart des tests CommonMark. La plupart des tests qui échouent concernent des cas assez rares. Néanmoins, à mesure que CommonMark mûrit, la conformité devrait s’améliorer.
Qui l'utilise ?
Laravel Framework, Bolt CMS, Grav CMS, Herbie CMS, Kirby CMS, October CMS, Pico CMS, Statamic CMS, phpDocumentor, RaspberryPi.org, Symfony Demo et plus encore.
Comment puis-je aider ?
Utilisez-le, mettez-le en vedette, partagez-le et si vous vous sentez généreux, faites un don.
Que dois-je savoir d'autre ?
Je crée également Nota, une application de notes conçue pour les fichiers Markdown locaux.