atispro/emt-php8

EMT typograf compatible with php8+

Maintainers

Package info

github.com/theoretic/EMT-php8

pkg:composer/atispro/emt-php8

Transparency log

Statistics

Installs: 39

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 2

3.0.2 2026-08-26 07:10 UTC

This package is auto-updated.

Last update: 2026-08-27 12:38:07 UTC


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' или env EMT_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);