Procesamiento y análisis de Markdown en PHP: bibliotecas y ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con Markdown en PHP: reseña de bibliotecas y herramientas

\n\n

Markdown es un lenguaje de marcado ligero que permite crear texto formateado con una sintaxis simple. En PHP, existen varias bibliotecas maduras y confiables para procesar Markdown. En este artículo, revisaremos las tres herramientas más populares: Parsedown, PHP-Markdown y League/CommonMark.

\n\n

1. Parsedown — un analizador ligero y rápido

\n\n

Parsedown es una de las bibliotecas más populares para trabajar con Markdown en PHP. No requiere dependencias externas, admite todos los elementos básicos de marcado y funciona muy rápido.

\n\n

Instalación

\n
composer require erusev/parsedown
\n\n

Uso básico

\n
<?php\nrequire 'vendor/autoload.php';\n\n$Parsedown = new Parsedown();\n\n$markdown = <<<MARKDOWN\n# Encabezado de primer nivel\n\nEste es **texto en negrita** y *cursiva*.\n\n- Elemento de lista 1\n- Elemento de lista 2\n\n[Enlace a PythonLib](https://pythonlib.ru)\nMARKDOWN;\n\necho $Parsedown->text($markdown);\n?>
\n\n

El resultado de ejecutar este código es HTML correcto con encabezados, listas y enlaces.

\n\n

Funcionalidades adicionales

\n
    \n
  • Soporte para modo seguro (escape de etiquetas HTML)
  • \n
  • Trabajo con listas anidadas y tablas
  • \n
  • Configuración mediante los métodos setBreaksEnabled() y setMarkupEscaped()
  • \n
\n\n

2. PHP-Markdown — la solución clásica

\n\n

PHP-Markdown es la implementación original del analizador Markdown de Michel Fortin, basada en la versión Perl de John Gruber. Esta biblioteca sigue estrictamente la especificación de Markdown.

\n\n

Instalación

\n
composer require michelf/php-markdown
\n\n

Ejemplo de uso

\n
<?php\nrequire 'vendor/autoload.php';\n\nuse Michelf\\Markdown;\n\n$markdown = <<<MARKDOWN\n## Segundo nivel de encabezado\n\n> Esto es una cita.\n> Puede ser multilínea.\n\n1. Primer elemento de lista numerada\n2. Segundo elemento\n\n`código en línea` y bloque de código:\n\n    <?php\n    echo "¡Hola, Mundo!";\n    ?>\nMARKDOWN;\n\n$html = Markdown::defaultTransform($markdown);\necho $html;\n?>
\n\n

Características

\n
    \n
  • Soporte para sintaxis extendida mediante MarkdownExtra
  • \n
  • Conversión automática de enlaces y direcciones de correo electrónico
  • \n
  • Posibilidad de deshabilitar HTML en la salida
  • \n
\n\n

3. League/CommonMark — implementación estandarizada

\n\n

League/CommonMark es una biblioteca que implementa el estándar oficial CommonMark. Proporciona la máxima compatibilidad con otros analizadores y admite extensiones.

\n\n

Instalación

\n
composer require league/commonmark
\n\n

Ejemplo con extensiones

\n
<?php\nrequire 'vendor/autoload.php';\n\nuse League\\CommonMark\\Environment\\Environment;\nuse League\\CommonMark\\Extension\\CommonMark\\CommonMarkCoreExtension;\nuse League\\CommonMark\\MarkdownConverter;\n\n// Creamos el entorno con las extensiones básicas\n$environment = new Environment();\n$environment->addExtension(new CommonMarkCoreExtension());\n\n$converter = new MarkdownConverter($environment);\n\n$markdown = <<<MARKDOWN\n| Tabla    | Columna 1 | Columna 2 |\n|----------|-----------|-----------|\n| Fila 1   | Valor     | Valor     |\n| Fila 2   | Valor     | Valor     |\n\n~~Texto tachado~~ y ==texto resaltado== (GFM).\nMARKDOWN;\n\necho $converter->convert($markdown)->getContent();\n?>
\n\n

Extensiones adicionales

\n
    \n
  • Table — soporte para tablas
  • \n
  • Strikethrough — texto tachado
  • \n
  • TaskList — casillas de verificación
  • \n
  • Autolink — enlaces automáticos
  • \n
\n\n

Comparación de bibliotecas

\n\n

Recommendations