Блог веб-разработчика v 1.0.0
Symfony2, AngularJS, React, Gulp, PhpStorm и много других страшных слов

Самый быстрый парсер Markdown на PHP

3 года назад
4446 просмотров
Markdown PHP Yii2

Самый быстрый парсер Markdown в HTML, написанный на PHPMarkdown - облегченный язык разметки, который часто используется для оформления текста, например, в блогах или документации к различным программным продуктам.

Сам по себе Markdown никак не парсится браузерами и отображается в виде обычного текста, т.к. не является чистым HTML, поэтому для показа Markdown сначала нужно перевести в HTML. Для примера, тот же GitHub автоматически парсит ваш README.md в HTML для более симпатичного отображения. Это очень удобно, т.к. текст приобретает более целостный и однообразный вид.

Для PHP есть огромное количество библиотек для парсинга Markdown. Некоторые из них отличаются итоговым результатом, но в основном между собой они соревнуются в скорости парсинга, т.к. это наиболее важный показатель при переводе Markdown в HTML.

Parsedown - библиотека из одного PHP файла. Наверное, благодаря этому она показала довольно быстрые результаты заняв первое место в бенчмарке. Но за скорость приходится платить. написанная "топроно" эта библиотека состоит всего из одного класса и вообще не поддается какому-либо расширению (наследование никто не отменял, но это не то).

Установка и использование

Установить Parsedown можно через composer: "erusev/parsedown": "dev-master" или просто скачав и подключив единственный файл из GitHub репозитория. Далее все сводится к созданию объекта и вызове единственного метода:

$parsedown = new Parsedown();
echo $parsedown->parse('Hello _Parsedown_!'); #  <p>Hello <em>Parsedown</em>!</p>

Parsedown не имеет других публичных методов для или каких-либо настроек. Все просто и "топорно".

Альтернативы

Если вам нужно больше функционала, можно воспользоваться следующей в списке бенчмарка библиотекой - cebe/markdown

Она немного медленнее предыдущей, но предоставляет куда больше возможностей. Например, оформление Markdown как на GitHub'е, а так же возможность расширения парсера добавлением новых блочных тегов и инлайновых элементов. Так же замечу, что эту библитеку используют разработчики Yii2 для парсинга документации в HTML.

Что еще почитать