league/commonmark é um analisador PHP Markdown altamente extensível criado por Colin O'Dell que suporta todas as especificações CommonMark e Markdown com sabor de GitHub. É baseado na implementação de referência CommonMark JS de John MacFarlane (@jgm).
Este projeto requer PHP 7.4 ou superior com a extensão mbstring
. Para instalá-lo via Composer basta executar:
$ compositor requer liga/marca comum
A classe CommonMarkConverter
fornece um wrapper simples para converter CommonMark em HTML:
use LeagueCommonMarkCommonMarkConverter;$converter = new CommonMarkConverter(['html_input' => 'strip','allow_unsafe_links' => false, ]);echo $converter->convert('# Olá Mundo!');// <h1>Olá Mundo!</h1>
Ou se você quiser Markdown com sabor do GitHub, use a classe GithubFlavoredMarkdownConverter
:
use LeagueCommonMarkGithubFlavoredMarkdownConverter;$converter = new GithubFlavoredMarkdownConverter(['html_input' => 'strip','allow_unsafe_links' => false, ]);echo $converter->convert('# Olá Mundo!');// <h1>Olá Mundo!</h1>
Observe que apenas as codificações UTF-8 e ASCII são suportadas. Se o seu Markdown usar uma codificação diferente, converta-o para UTF-8 antes de executá-lo nesta biblioteca.
Cuidado
Se você estiver analisando entradas não confiáveis de usuários, considere definir as opções html_input
e allow_unsafe_links
conforme o exemplo acima. Consulte https://commonmark.thephpleague.com/security/ para obter mais detalhes. Se você também optar por permitir entrada de HTML bruto de usuários não confiáveis, considere usar uma biblioteca (como HTML Purifier) para fornecer filtragem HTML adicional.
A documentação completa sobre uso avançado, configuração e personalização pode ser encontrada em commonmark.thephpleague.com.
Informações sobre como atualizar para versões mais recentes desta biblioteca podem ser encontradas em https://commonmark.thephpleague.com/releases.
O GithubFlavoredMarkdownConverter
mostrado anteriormente é um substituto imediato para o CommonMarkConverter
que adiciona recursos adicionais encontrados na especificação GFM:
Links automáticos
HTML bruto não permitido
Tachado
Tabelas
Listas de tarefas
Consulte a documentação das Extensões para obter mais detalhes sobre como incluir apenas alguns recursos do GFM se você não quiser todos eles.
BoloPHP 3
Drupal
Laravel 4+
Esculpir
Symfony 2 e 3
Symfony 4
Extensão Twig Markdown
Filtro e tag de galho
Blog Laravel CommonMark
Consulte nossa documentação de extensões para obter uma lista completa de extensões incluídas nesta biblioteca.
Analisadores/renderizadores personalizados podem ser agrupados em extensões que estendem o CommonMark. Aqui estão alguns que você pode achar interessantes:
Extensão Emoji - extensão emoji UTF-8 com tag Github.
Extensões Sup Sub - Adiciona suporte para sobrescrito e subscrito (tags HTML <sup>
e <sub>
)
Extensão iframe do YouTube - Substitui o link do YouTube por iframe.
Extensão Lazy Image - Adiciona várias opções para carregamento lento de imagens.
Extensão de marcador - Adiciona suporte para texto destacado (tag HTML <mark>
)
Outros podem ser encontrados no Packagist no tipo de pacote commonmark-extension
.
Se você criar o seu próprio, sinta-se à vontade para enviar um PR para adicioná-lo a esta lista!
Confira outras coisas legais que as pessoas estão fazendo com league/commonmark
: https://packagist.org/packages/league/commonmark/dependents
SemVer é seguido de perto. Versões secundárias e de patch não devem introduzir alterações significativas na base de código; no entanto, eles podem alterar a saída AST ou HTML resultante do Markdown analisado (devido a correções de bugs, alterações de especificações, etc.). Como resultado, você pode obter um HTML ligeiramente diferente, mas qualquer código personalizado criado nesta biblioteca ainda deve funcionar corretamente.
Quaisquer classes ou métodos marcados como @internal
não se destinam ao uso fora desta biblioteca e estão sujeitos a alterações significativas a qualquer momento, portanto, evite usá-los.
Quando uma nova versão secundária (por exemplo, 2.0
-> 2.1
) for lançada, a anterior ( 2.0
) continuará a receber correções de segurança e bugs críticos por pelo menos 3 meses.
Quando uma nova versão principal é lançada (por exemplo, 1.6
-> 2.0
), a anterior ( 1.6
) receberá correções de bugs críticos por pelo menos 3 meses e atualizações de segurança por 6 meses após o lançamento da nova versão.
(Esta política pode mudar no futuro e exceções podem ser feitas caso a caso.)
Suporte profissional, incluindo notificação de novos lançamentos e atualizações de segurança, está disponível por meio de uma assinatura Tidelift.
Para relatar uma vulnerabilidade de segurança, use o contato de segurança da Tidelift. A Tidelift coordenará a correção e divulgação conosco.
Se você encontrar um bug nas especificações, informe-o ao projeto CommonMark. Qualquer correção resultante também será implementada neste projeto.
Contribuições para esta biblioteca são bem-vindas , especialmente aquelas que:
Melhorar a usabilidade ou flexibilidade sem comprometer nossa capacidade de aderir às especificações CommonMark
Correções de espelho feitas na implementação de referência
Otimize o desempenho
Corrija problemas ao aderir às especificações do CommonMark
A refatoração principal da lógica de análise central deve ser evitada, se possível, para que possamos acompanhar facilmente as atualizações feitas na implementação de referência. Dito isto, consideraremos absolutamente alterações que não se desviem muito das especificações de referência ou que sejam favorecidas por outras implementações populares do CommonMark.
Consulte CONTRIBUINDO para obter detalhes adicionais.
$ teste do compositor
Isso também testará a liga/marca comum em relação às especificações suportadas mais recentes.
Você pode comparar o desempenho de league/commonmark com outros analisadores populares executando a ferramenta de benchmark incluída:
$./tests/benchmark/benchmark.php
Este código foi originalmente baseado na implementação de referência CommonMark JS que é escrita, mantida e protegida por direitos autorais por John MacFarlane. Este projeto simplesmente não existiria sem o seu trabalho.
E um enorme obrigado a todos os nossos incríveis colaboradores:
Gostaríamos também de estender nossos sinceros agradecimentos aos seguintes patrocinadores que apoiam o desenvolvimento contínuo deste projeto:
Tidelift por oferecer suporte aos mantenedores e aos usuários finais por meio de seu programa de suporte profissional
Blackfire por fornecer uma assinatura do Open-Source Profiler
JetBrains por apoiar este projeto com licenças gratuitas do PhpStorm
Você está interessado em patrocinar o desenvolvimento deste projeto? Consulte https://www.colinodell.com/sponsor para obter uma lista de formas de contribuir.
league/commonmark está licenciado sob a licença BSD-3. Consulte o arquivo LICENSE
para obter mais detalhes.
Este projeto é mantido principalmente por Colin O'Dell. Os membros da equipe de liderança da PHP League podem ocasionalmente ajudar em algumas dessas tarefas.
Este projeto é usado por Drupal, Laravel Framework, Cachet, Firefly III, Neos, Daux.io e muito mais!
Obtenha suporte profissional para liga/marca comum com uma assinatura do Tidelift
O Tidelift ajuda a tornar o código aberto sustentável para os mantenedores, ao mesmo tempo que oferece às empresas
garantias sobre segurança, manutenção e licenciamento para suas dependências.