Trabalhando com Markdown em PHP: bibliotecas e ferramentas
Markdown é uma linguagem de marcação leve, criada para formatação rápida de texto sem a necessidade de escrever HTML complexo. No portal educacional PythonLib, frequentemente enfrentamos a tarefa de converter a marcação Markdown em HTML puro para exibir artigos, documentação e comentários. PHP, como linguagem do lado do servidor, oferece várias soluções maduras para essa tarefa. Neste artigo, veremos as três bibliotecas mais populares, sua instalação, uso básico e características.
Por que preciso de um parser Markdown em PHP?
Markdown é conveniente para autores de conteúdo, mas os navegadores não o entendem diretamente. Portanto, no servidor, é necessário converter Markdown para HTML. Vantagens adicionais do uso de bibliotecas:
- Segurança: processamento correto de tags HTML e prevenção de ataques XSS.
- Flexibilidade: suporte a extensões (tabelas, notas de rodapé, fórmulas matemáticas).
- Desempenho: cache de resultados e conversão rápida.
1. Parsedown — o mais simples e rápido
Parsedown é uma biblioteca de classe única que não requer dependências. É ideal para projetos pequenos e iniciantes.
Instalação
composer require erusev/parsedownExemplo de uso
<?phprequire_once 'vendor/autoload.php';
$Parsedown = new Parsedown();$markdown = "# Título
Este é um texto **negrito** e *itálico*.";$html = $Parsedown->text($markdown);echo $html;?>Resultado: HTML correto com as tags <h1>, <strong>, <em>. Parsedown escapa automaticamente tags HTML perigosas, se não fizerem parte da marcação Markdown.
Configuração do modo seguro
$Parsedown->setSafeMode(true); // Desativa HTML no Markdown2. League/CommonMark — conformidade com o padrão
A biblioteca da The PHP League implementa o padrão oficial CommonMark. Ela suporta extensões (tabelas, texto tachado) e segue rigorosamente a especificação.
Instalação
composer require league/commonmarkUso básico
<?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 = "| Tabela | Coluna ||---------|---------|| Célula 1 | Célula 2 |";$html = $converter->convert($markdown);echo $html;?>Recursos avançados
Você pode adicionar extensões adicionais:
use League\\CommonMark\\Extension\\Table\\TableExtension;use League\\CommonMark\\Extension\\Strikethrough\\StrikethroughExtension;
$environment->addExtension(new TableExtension());$environment->addExtension(new StrikethroughExtension());Isso permite processar tabelas e texto tachado (~~texto~~).
3. cebe/markdown — alternativa leve
A biblioteca cebe/markdown de Carsten Brandt se destaca pela modularidade. Você pode usar apenas os parsers necessários (por exemplo, apenas para listas ou títulos).
Instalação
composer require cebe/markdownExemplo com o parser MarkdownExtra
<?phpuse cebe\\markdown\\MarkdownExtra