Работа с 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 — лучший выбор для современных проектов
Также в библиотеке
JWT токены в Java: Полное руководство по работе с JSON Web Tokens
ModelMapper для Java: полное руководство с примерами
Генерация PDF отчётов на C# (.NET) с iTextSharp и QuestPDF
PDF генерация в C# (.NET): Полное руководство по библиотекам
Интернационализация (i18n) в PHP: библиотека gettext и современные подходы