Trabajo con Markdown en PHP: reseña de bibliotecas y herramientas
\n\nMarkdown 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\n1. Parsedown — un analizador ligero y rápido
\n\nParsedown 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\nInstalación
\ncomposer require erusev/parsedown\n\nUso 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\nEl resultado de ejecutar este código es HTML correcto con encabezados, listas y enlaces.
\n\nFuncionalidades 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()ysetMarkupEscaped()\n
2. PHP-Markdown — la solución clásica
\n\nPHP-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\nInstalación
\ncomposer require michelf/php-markdown\n\nEjemplo 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\nCaracterí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
3. League/CommonMark — implementación estandarizada
\n\nLeague/CommonMark es una biblioteca que implementa el estándar oficial CommonMark. Proporciona la máxima compatibilidad con otros analizadores y admite extensiones.
\n\nInstalación
\ncomposer require league/commonmark\n\nEjemplo 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\nExtensiones adicionales
\n- \n
- Table — soporte para tablas \n
- Strikethrough — texto tachado \n
- TaskList — casillas de verificación \n
- Autolink — enlaces automáticos \n
Comparación de bibliotecas
\n\nTambién en la biblioteca
Pistache C++: guía completa con ejemplos prácticos
gRPC para C++: bibliotecas, configuración y ejemplos de código
Configuración de aplicaciones Java: resumen de bibliotecas y herramientas
Rate Limiting en Go (Golang): bibliotecas, patrones y ejemplos de implementación