Mejor analizador de Markdown en PHP: demostración
Instale el paquete del compositor:
composer require erusev/parsedown
O descargue la última versión e incluya Parsedown.php
$ Parsedown = new Parsedown ();
echo $ Parsedown -> text ( ' Hello _Parsedown_! ' ); # prints : < p > Hello < em > Parsedown </ em >!</ p >
También puede analizar la rebaja en línea únicamente:
echo $ Parsedown -> line ( ' Hello _Parsedown_! ' ); # prints : Hello < em > Parsedown </ em >!
Más ejemplos en la wiki y en este vídeo tutorial.
Parsedown es capaz de escapar de la entrada del usuario dentro del HTML que genera. Además, Parsedown aplicará desinfección a vectores de secuencias de comandos adicionales (como destinos de enlaces de secuencias de comandos) que se introducen mediante la propia sintaxis de rebajas.
Para indicarle a Parsedown que está procesando entradas de usuarios que no son de confianza, utilice lo siguiente:
$ Parsedown -> setSafeMode ( true );
Si, en cambio, desea permitir HTML en entradas de usuario que no son de confianza, pero aún desea que la salida esté libre de XSS, se recomienda utilizar un desinfectante de HTML que permita incluir etiquetas HTML en la lista blanca, como HTML Purifier.
En ambos casos, debería considerar seriamente emplear medidas de defensa en profundidad, como implementar una Política de seguridad de contenido (una característica de seguridad del navegador) para que su página esté segura incluso si un atacante encuentra una vulnerabilidad en una de las primeras. líneas de defensa arriba.
El modo seguro no necesariamente produce resultados seguros cuando se utilizan extensiones de Parsedown. Las extensiones deben evaluarse por sí solas para determinar su seguridad específica contra XSS.
ADVERTENCIA: ¡Este método no está a salvo de XSS!
Si desea escapar del HTML en una entrada confiable, puede usar lo siguiente:
$ Parsedown -> setMarkupEscaped ( true );
Tenga en cuenta que esto aún permite a los usuarios insertar vectores de secuencias de comandos no seguros, por ejemplo: [xss](javascript:alert%281%29)
.
¿Cómo funciona Parsedown?
Intenta leer Markdown como un humano. Primero, mira las líneas. Está interesado en cómo comienzan las líneas. Esto le ayuda a reconocer bloques. Sabe, por ejemplo, que si una línea comienza con -
entonces quizás pertenezca a una lista. Una vez que reconoce los bloques, continúa con el contenido. Tal como se lee, cuida los caracteres especiales. Esto le ayuda a reconocer elementos en línea (o en línea).
A este enfoque lo llamamos "basado en líneas". Creemos que Parsedown es el primer analizador de Markdown que lo utiliza. Desde el lanzamiento de Parsedown, otros desarrolladores han utilizado el mismo enfoque para desarrollar otros analizadores de Markdown en PHP y en otros lenguajes.
¿Cumple con CommonMark?
Pasa la mayoría de las pruebas CommonMark. La mayoría de las pruebas que no pasan se refieren a casos bastante poco comunes. Aún así, a medida que CommonMark madure, el cumplimiento debería mejorar.
¿Quién lo usa?
Laravel Framework, Bolt CMS, Grav CMS, Herbie CMS, Kirby CMS, October CMS, Pico CMS, Statamic CMS, phpDocumentor, RaspberryPi.org, Symfony Demo y más.
¿Cómo puedo ayudar?
Úselo, destaque, compártalo y si se siente generoso, done.
¿Qué más debo saber?
También creo Nota, una aplicación de notas diseñada para archivos Markdown locales.