Trabajo con Markdown en PHP: bibliotecas y herramientas
Markdown es un lenguaje de marcado ligero creado para formatear texto rápidamente sin necesidad de escribir HTML complejo. En el portal educativo PythonLib, a menudo nos enfrentamos a la tarea de convertir el marcado Markdown en HTML limpio para mostrar artículos, documentación y comentarios. PHP, como lenguaje del lado del servidor, ofrece varias soluciones maduras para esta tarea. En este artículo, revisaremos las tres bibliotecas más populares, su instalación, uso básico y características.
¿Por qué necesitas un analizador de Markdown en PHP?
Markdown es conveniente para los autores de contenido, pero los navegadores no lo entienden directamente. Por lo tanto, en el servidor es necesario convertir Markdown a HTML. Ventajas adicionales de usar bibliotecas:
- Seguridad: procesamiento correcto de etiquetas HTML y prevención de ataques XSS.
- Flexibilidad: soporte para extensiones (tablas, notas al pie, fórmulas matemáticas).
- Rendimiento: almacenamiento en caché de resultados y conversión rápida.
1. Parsedown — el más simple y rápido
Parsedown es una biblioteca de una sola clase que no requiere dependencias. Es ideal para proyectos pequeños y principiantes.
Instalación
composer require erusev/parsedownEjemplo de uso
<?phprequire_once 'vendor/autoload.php';
$Parsedown = new Parsedown();$markdown = "# Título
Este es texto **negrita** y *cursiva*.";$html = $Parsedown->text($markdown);echo $html;?>Resultado: HTML correcto con etiquetas <h1>, <strong>, <em>. Parsedown escapa automáticamente las etiquetas HTML peligrosas si no son parte del marcado Markdown.
Configuración del modo seguro
$Parsedown->setSafeMode(true); // Desactiva HTML en Markdown2. League/CommonMark — cumplimiento del estándar
La biblioteca de The PHP League implementa el estándar oficial CommonMark. Soporta extensiones (tablas, texto tachado) y sigue estrictamente la especificación.
Instalación
composer require league/commonmarkUso básico
<?phpuse League\\CommonMark\\Environment\\Environment;use League\\CommonMark\\Extension\\CommonMark\\CommonMarkCoreExtension;use League\\CommonMark\\MarkdownConverter;
$environment = new Environment();$environment->addExtension(new CommonMarkCoreExtension());$converter = new MarkdownConverter($environment);
$markdown = "| Tabla | Columna ||---------|---------|| Celda 1 | Celda 2 |";$html = $converter->convert($markdown);echo $html;?>Funcionalidades avanzadas
Puedes agregar extensiones adicionales:
use League\\CommonMark\\Extension\\Table\\TableExtension;use League\\CommonMark\\Extension\\Strikethrough\\StrikethroughExtension;
$environment->addExtension(new TableExtension());$environment->addExtension(new StrikethroughExtension());Esto permite procesar tablas y texto tachado (~~texto~~).
3. cebe/markdown — una alternativa ligera
La biblioteca cebe/markdown de Carsten Brandt se destaca por su modularidad. Puedes usar solo los analizadores que necesites (por ejemplo, solo para listas o encabezados).
Instalación
composer require cebe/markdownEjemplo con el analizador MarkdownExtra
<?phpuse cebe\\markdown\\MarkdownExtra