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

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

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

Начать курс

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

Markdown — это облегчённый язык разметки, который позволяет создавать форматированный текст с помощью простого синтаксиса. В PHP для обработки Markdown существует несколько зрелых и надёжных библиотек. В этой статье мы рассмотрим три наиболее популярных инструмента: Parsedown, PHP-Markdown и League/CommonMark.

1. Parsedown — лёгкий и быстрый парсер

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

Установка

composer require erusev/parsedown

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

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

$Parsedown = new Parsedown();

$markdown = <<<MARKDOWN
# Заголовок первого уровня

Это **жирный текст** и *курсив*.

- Элемент списка 1
- Элемент списка 2

[Ссылка на PythonLib](https://pythonlib.ru)
MARKDOWN;

echo $Parsedown->text($markdown);
?>

Результат выполнения этого кода — корректный HTML с заголовками, списками и ссылками.

Дополнительные возможности

  • Поддержка безопасного режима (экранирование HTML-тегов)
  • Работа с вложенными списками и таблицами
  • Настройка через методы setBreaksEnabled() и setMarkupEscaped()

2. PHP-Markdown — классическое решение

PHP-Markdown — оригинальная реализация парсера Markdown от Michel Fortin, основанная на Perl-версии Джона Грубера. Эта библиотека строго следует спецификации Markdown.

Установка

composer require michelf/php-markdown

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

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

use Michelf\Markdown;

$markdown = <<<MARKDOWN
## Второй уровень заголовка

> Это цитата.
> Она может быть многострочной.

1. Первый пункт нумерованного списка
2. Второй пункт

`inline код` и блок кода:

    <?php
    echo "Hello, World!";
    ?>
MARKDOWN;

$html = Markdown::defaultTransform($markdown);
echo $html;
?>

Особенности

  • Поддержка расширенного синтаксиса через MarkdownExtra
  • Автоматическое преобразование ссылок и email-адресов
  • Возможность отключать HTML в выводе

3. League/CommonMark — стандартизированная реализация

League/CommonMark — библиотека, реализующая официальный стандарт CommonMark. Она обеспечивает максимальную совместимость с другими парсерами и поддерживает расширения.

Установка

composer require league/commonmark

Пример с расширениями

<?php
require 'vendor/autoload.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 = <<<MARKDOWN
| Таблица | Столбец 1 | Столбец 2 |
|---------|-----------|-----------|
| Строка 1| Значение  | Значение  |
| Строка 2| Значение  | Значение  |

~~Зачёркнутый текст~~ и ==выделенный текст== (GFM).
MARKDOWN;

echo $converter->convert($markdown)->getContent();
?>

Дополнительные расширения

  • Table — поддержка таблиц
  • Strikethrough — зачёркнутый текст
  • TaskList — чекбоксы
  • Autolink — автоматические ссылки

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

Выбор подходящей библиотеки зависит от ваших задач:

  • Parsedown — идеален для простых проектов, где нужна скорость и минимальная конфигурация
  • PHP-Markdown — подходит для точного соответствия оригинальному синтаксису Markdown
  • League/CommonMark — лучший выбор для современных проектов

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