Melhor analisador de Markdown em PHP - demonstração
Instale o pacote compositor:
composer require erusev/parsedown
Ou baixe a versão mais recente e inclua Parsedown.php
$ Parsedown = new Parsedown ();
echo $ Parsedown -> text ( ' Hello _Parsedown_! ' ); # prints : < p > Hello < em > Parsedown </ em >!</ p >
Você também pode analisar apenas a redução in-line:
echo $ Parsedown -> line ( ' Hello _Parsedown_! ' ); # prints : Hello < em > Parsedown </ em >!
Mais exemplos no wiki e neste vídeo tutorial.
Parsedown é capaz de escapar da entrada do usuário no HTML que ele gera. Além disso, o Parsedown aplicará a sanitização a vetores de script adicionais (como destinos de link de script) que são introduzidos pela própria sintaxe de markdown.
Para informar ao Parsedown que ele está processando entradas de usuários não confiáveis, use o seguinte:
$ Parsedown -> setSafeMode ( true );
Se, em vez disso, você deseja permitir HTML em entradas de usuários não confiáveis, mas ainda deseja que a saída seja livre de XSS, é recomendável usar um sanitizador de HTML que permite que tags HTML sejam colocadas na lista de permissões, como HTML Purifier.
Em ambos os casos, você deve considerar fortemente o emprego de medidas de defesa profunda, como a implantação de uma Política de Segurança de Conteúdo (um recurso de segurança do navegador) para que sua página provavelmente esteja segura, mesmo que um invasor encontre uma vulnerabilidade em um dos primeiros. linhas de defesa acima.
O modo de segurança não produz necessariamente resultados seguros ao usar extensões para Parsedown. As extensões devem ser avaliadas por si mesmas para determinar sua segurança específica contra XSS.
AVISO: Este método não é seguro contra XSS!
Se desejar escapar do HTML em uma entrada confiável, você pode usar o seguinte:
$ Parsedown -> setMarkupEscaped ( true );
Esteja ciente de que isso ainda permite que os usuários insiram vetores de script inseguros, ex: [xss](javascript:alert%281%29)
.
Como funciona o Parsedown?
Ele tenta ler Markdown como um humano. Primeiro, ele olha para as linhas. Está interessado em saber como as linhas começam. Isso ajuda a reconhecer blocos. Ele sabe, por exemplo, que se uma linha começa com a -
então talvez ela pertença a uma lista. Depois de reconhecer os blocos, ele continua com o conteúdo. À medida que lê, ele fica atento aos caracteres especiais. Isso ajuda a reconhecer elementos embutidos (ou embutidos).
Chamamos essa abordagem de “baseada em linha”. Acreditamos que Parsedown é o primeiro analisador Markdown a utilizá-lo. Desde o lançamento do Parsedown, outros desenvolvedores usaram a mesma abordagem para desenvolver outros analisadores Markdown em PHP e em outras linguagens.
É compatível com CommonMark?
Ele passa na maioria dos testes do CommonMark. A maioria dos testes reprovados trata de casos bastante incomuns. Ainda assim, à medida que o CommonMark amadurece, a conformidade deverá melhorar.
Quem usa?
Laravel Framework, Bolt CMS, Grav CMS, Herbie CMS, Kirby CMS, October CMS, Pico CMS, Statamic CMS, phpDocumentor, RaspberryPi.org, Symfony Demo e muito mais.
Como posso ajudar?
Use, marque com estrela, compartilhe e se você se sentir generoso, doe.
O que mais devo saber?
Eu também crio o Nota – um aplicativo de notas projetado para arquivos Markdown locais.