atispro / emt-php8
EMT typograf compatible with php8+
3.0.2
2026-08-26 07:10 UTC
Requires
- php: ^8.1
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: ^10
README
Типограф Муравьёва ( mdash.ru ), портированный на php8+.
Что изменено
- типограф переписан для обеспечения совместимости с php8+
- изменено правило mdash_symbol_to_html_mdash (теперь символ " — " должен быть окружён пробелами)
- добавлено правило double_minus_to_html_mdash (последовательность " -- " заменяется на " — ")
Движок v3
Начиная с v3.0 типограф работает на новом движке (EMT\Engine): однопроходный
лексер HTML + плейсхолдеры вместо base64-экранирования, ноль eval(),
типизированные правила вместо /e-регэкспов. Публичный API не изменился;
байтовая совместимость вывода со старым движком закреплена golden-фикстурами
(tests/Golden/, 179 фикстур: 5 профилей + все 69 опций).
- Быстрее старого движка в 1.1–1.8 раза (см.
bench/BASELINE.md), память — вдвое меньше. - Исправления и отличия от v2 (защита от инъекции маркеров, литеральные
</>в тексте,>внутри атрибутов):docs/v3-behavior-changes.md. - Выбор движка:
EMT\EMT_Base::$engine = 'v2'|'v3'|'shadow'или envEMT_ENGINE. Конфигурации, которые v3 не покрывает (кастомные треты/правила черезadd_tret/put_rule, regex-блоки, режимы debug/log), автоматически выполняются старым движком. - Старый движок (v2) объявлен устаревшим и будет удалён в следующей мажорной
версии; до этого он остаётся доступным через
EMT_ENGINE=v2.
Как установить
composer require atispro/emt-php8
Как использовать
<?php $html = "<div>HTML-код, который надо оттипографить</div>"; // опции здесь опциональны и приведены для примера $options = [ 'OptAlign.all'=>'off', //'Etc.split_number_to_triads'=>'off', 'Text.paragraphs'=>'off', 'Space.bracket_fix'=>'off', ]; $html = EMT\EMTypograph::fast_apply($html,$options);