Обработка и парсинг Markdown в PHP: библиотеки и инструменты

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Работа с Markdown в PHP: библиотеки и инструменты

Markdown — это облегчённый язык разметки, созданный для быстрого форматирования текста без необходимости писать сложный HTML. На образовательном портале PythonLib мы часто сталкиваемся с задачей преобразования Markdown-разметки в чистый HTML для отображения статей, документации и комментариев. PHP, как серверный язык, предлагает несколько зрелых решений для этой задачи. В этой статье мы рассмотрим три самые популярные библиотеки, их установку, базовое использование и особенности.

Зачем нужен парсер Markdown в PHP?

Markdown удобен для авторов контента, но браузеры не понимают его напрямую. Поэтому на сервере необходимо преобразовывать Markdown в HTML. Дополнительные преимущества использования библиотек:

  • Безопасность: корректная обработка HTML-тегов и предотвращение XSS-атак.
  • Гибкость: поддержка расширений (таблицы, сноски, математические формулы).
  • Производительность: кэширование результатов и быстрая конвертация.

1. Parsedown — самый простой и быстрый

Parsedown — это одноклассовая библиотека, которая не требует зависимостей. Она идеально подходит для небольших проектов и новичков.

Установка

composer require erusev/parsedown

Пример использования

<?php
require_once 'vendor/autoload.php';

$Parsedown = new Parsedown();
$markdown = "# Заголовок\n\nЭто **жирный** текст и *курсив*.";
$html = $Parsedown->text($markdown);
echo $html;
?>

Результат: корректный HTML с тегами <h1>, <strong>, <em>. Parsedown автоматически экранирует опасные HTML-теги, если они не являются частью разметки Markdown.

Настройка безопасного режима

$Parsedown->setSafeMode(true); // Отключает HTML в Markdown

2. League/CommonMark — соответствие стандарту

Библиотека от The PHP League реализует официальный стандарт CommonMark. Она поддерживает расширения (таблицы, зачёркнутый текст) и строго следует спецификации.

Установка

composer require league/commonmark

Базовое использование

<?php
use 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 = "| Таблица | Столбец |\n|---------|---------|\n| Ячейка 1 | Ячейка 2 |";
$html = $converter->convert($markdown);
echo $html;
?>

Расширенные возможности

Вы можете подключать дополнительные расширения:

use League\CommonMark\Extension\Table\TableExtension;
use League\CommonMark\Extension\Strikethrough\StrikethroughExtension;

$environment->addExtension(new TableExtension());
$environment->addExtension(new StrikethroughExtension());

Это позволяет обрабатывать таблицы и зачёркнутый текст (~~текст~~).

3. cebe/markdown — лёгкая альтернатива

Библиотека cebe/markdown от Carsten Brandt отличается модульностью. Вы можете использовать только нужные парсеры (например, только для списков или заголовков).

Установка

composer require cebe/markdown

Пример с парсером MarkdownExtra

<?php
use cebe\markdown\MarkdownExtra;

$parser = new MarkdownExtra();
$markdown = "Текст с ~~зачёркиванием~~ и сноской[^1].\n\n[^1]: Текст сноски.";
$html = $parser->parse($markdown);
echo $html;
?>

MarkdownExtra поддерживает сноски, таблицы и атрибуты (например, {.class}).

Сравнение библиотек

Критерий

Рекомендаций