league/commonmark es un analizador PHP Markdown altamente extensible creado por Colin O'Dell que admite la especificación completa de CommonMark y Markdown con sabor a GitHub. Se basa en la implementación de referencia de CommonMark JS de John MacFarlane (@jgm).
Este proyecto requiere PHP 7.4 o superior con la extensión mbstring
. Para instalarlo a través de Composer simplemente ejecute:
$ compositor requiere liga/marca común
La clase CommonMarkConverter
proporciona un contenedor simple para convertir CommonMark a HTML:
utilice LeagueCommonMarkCommonMarkConverter;$converter = new CommonMarkConverter(['html_input' => 'strip','allow_unsafe_links' => false, ]);echo $converter->convert('# ¡Hola mundo!');// <h1>¡Hola mundo!</h1>
O si deseas Markdown con sabor a GitHub, usa la clase GithubFlavoredMarkdownConverter
en su lugar:
use LeagueCommonMarkGithubFlavoredMarkdownConverter;$converter = new GithubFlavoredMarkdownConverter(['html_input' => 'strip','allow_unsafe_links' => false, ]);echo $converter->convert('# ¡Hola mundo!');// <h1>¡Hola mundo!</h1>
Tenga en cuenta que solo se admiten codificaciones UTF-8 y ASCII. Si su Markdown utiliza una codificación diferente, conviértalo a UTF-8 antes de ejecutarlo en esta biblioteca.
Precaución
Si va a analizar entradas de usuarios que no son de confianza, considere configurar las opciones html_input
y allow_unsafe_links
según el ejemplo anterior. Consulte https://commonmark.thephpleague.com/security/ para obtener más detalles. Si también elige permitir la entrada de HTML sin formato de usuarios que no son de confianza, considere usar una biblioteca (como HTML Purifier) para proporcionar filtrado HTML adicional.
Puede encontrar documentación completa sobre uso avanzado, configuración y personalización en commonmark.thephpleague.com.
Puede encontrar información sobre cómo actualizar a versiones más recientes de esta biblioteca en https://commonmark.thephpleague.com/releases.
El GithubFlavoredMarkdownConverter
que se mostró anteriormente es un reemplazo directo del CommonMarkConverter
que agrega características adicionales que se encuentran en la especificación GFM:
Enlaces automáticos
HTML sin formato no permitido
Tachado
Mesas
Listas de tareas
Consulte la documentación de Extensiones para obtener más detalles sobre cómo incluir solo ciertas funciones de GFM si no las desea todas.
pastelPHP 3
drupal
Laravel 4+
esculpir
Symfony 2 y 3
Symfony 4
Extensión Twig Markdown
Filtro de ramita y etiqueta
Blog de Laravel CommonMark
Consulte nuestra documentación de extensiones para obtener una lista completa de las extensiones incluidas con esta biblioteca.
Los analizadores/renderizadores personalizados se pueden agrupar en extensiones que amplían CommonMark. Aquí te dejamos algunos que te pueden resultar interesantes:
Extensión de emoji: extensión de emoji UTF-8 con etiqueta Github.
Extensiones Sup Sub: agrega soporte para superíndice y subíndice (etiquetas HTML <sup>
y <sub>
)
Extensión de iframe de YouTube: reemplaza el enlace de YouTube con iframe.
Extensión Lazy Image: agrega varias opciones para la carga diferida de imágenes.
Extensión de marcador: agrega soporte para texto resaltado (etiqueta HTML <mark>
)
Otros se pueden encontrar en Packagist bajo el tipo de paquete commonmark-extension
.
Si crea el suyo propio, no dude en enviar un PR para agregarlo a esta lista.
Vea otras cosas interesantes que la gente está haciendo con league/commonmark
: https://packagist.org/packages/league/commonmark/dependents
SemVer es seguido de cerca. Las versiones menores y de parches no deberían introducir cambios importantes en el código base; sin embargo, pueden cambiar la salida AST o HTML resultante del Markdown analizado (debido a correcciones de errores, cambios de especificaciones, etc.). Como resultado, es posible que obtenga un HTML ligeramente diferente, pero cualquier código personalizado integrado en esta biblioteca aún debería funcionar correctamente.
Cualquier clase o método marcado como @internal
no está diseñado para usarse fuera de esta biblioteca y está sujeto a cambios importantes en cualquier momento, así que evite usarlos.
Cuando se lanza una nueva versión menor (por ejemplo, 2.0
-> 2.1
), la anterior ( 2.0
) seguirá recibiendo correcciones de errores críticos y de seguridad durante al menos 3 meses.
Cuando se lanza una nueva versión principal (por ejemplo, 1.6
-> 2.0
), la anterior ( 1.6
) recibirá correcciones de errores críticos durante al menos 3 meses y actualizaciones de seguridad durante 6 meses después de que salga la nueva versión.
(Esta política puede cambiar en el futuro y se pueden hacer excepciones caso por caso).
El soporte profesional, incluida la notificación de nuevos lanzamientos y actualizaciones de seguridad, está disponible a través de una suscripción a Tidelift.
Para informar una vulnerabilidad de seguridad, utilice el contacto de seguridad de Tidelift. Tidelift coordinará la solución y la divulgación con nosotros.
Si encuentra un error en la especificación, infórmelo al proyecto CommonMark. Cualquier solución resultante también se implementará eventualmente en este proyecto.
Las contribuciones a esta biblioteca son bienvenidas , especialmente aquellas que:
Mejorar la usabilidad o la flexibilidad sin comprometer nuestra capacidad de cumplir con las especificaciones CommonMark.
Correcciones de espejo realizadas en la implementación de referencia.
Optimizar el rendimiento
Solucionar problemas al cumplir con la especificación CommonMark
Si es posible, se debe evitar una refactorización importante de la lógica de análisis central para que podamos seguir fácilmente las actualizaciones realizadas en la implementación de referencia. Dicho esto, consideraremos absolutamente cambios que no se desvíen demasiado de la especificación de referencia o que sean favorecidos por otras implementaciones populares de CommonMark.
Consulte CONTRIBUCIÓN para obtener detalles adicionales.
$ prueba de compositor
Esto también probará la liga/marca común con la última especificación admitida.
Puede comparar el rendimiento de league/commonmark con otros analizadores populares ejecutando la herramienta de referencia incluida:
$ ./pruebas/benchmark/benchmark.php
Este código se basó originalmente en la implementación de referencia de CommonMark JS, escrita, mantenida y protegida por derechos de autor por John MacFarlane. Este proyecto simplemente no existiría sin su trabajo.
Y muchas gracias a todos nuestros increíbles colaboradores:
También nos gustaría extender nuestro más sincero agradecimiento a los siguientes patrocinadores que apoyan el desarrollo continuo de este proyecto:
Tidelift por ofrecer soporte tanto a los mantenedores como a los usuarios finales a través de su programa de soporte profesional.
Blackfire por proporcionar una suscripción a Open-Source Profiler
JetBrains por apoyar este proyecto con licencias PhpStorm gratuitas
¿Estás interesado en patrocinar el desarrollo de este proyecto? Consulte https://www.colinodell.com/sponsor para obtener una lista de formas de contribuir.
league/commonmark tiene la licencia BSD-3. Consulte el archivo LICENSE
para obtener más detalles.
Este proyecto lo mantiene principalmente Colin O'Dell. Los miembros del Equipo de Liderazgo de la Liga PHP ocasionalmente pueden ayudar con algunas de estas tareas.
¡Este proyecto es utilizado por Drupal, Laravel Framework, Cachet, Firefly III, Neos, Daux.io y más!
Obtenga soporte profesional para liga/commonmark con una suscripción a Tidelift
Tidelift ayuda a que el código abierto sea sostenible para los mantenedores y, al mismo tiempo, brinda a las empresas
garantías sobre seguridad, mantenimiento y licencias para sus dependencias.