/Typograph

Класс для автоматического применения правил русской типографики для веб

Primary LanguagePHP

Типограф (PHP5)

Авторы:

При создании типографа помимо личного опыта использовались:

Спасибо:

… и всем, кто пользуется типографом и сообщает об ошибках.

Отдельное спасибо Max-у за плагин к Wordpress.

На данный момент типограф умеет:

  • Обрабатывать тексты в различных кодировках(требуется iconv).
  • Заменять кавычки на ёлочки.
  • Склеивать двойные кавычки.
  • Заменять знак дефиса или два знака дефиса подряд — на знак длинного тире.
  • Заменять знак дефиса, ограниченный с обоих сторон цифрами — на знак короткого тире.
  • Заменять множество пробелов или табуляций на один пробел.
  • Заменять х в выражениях вроде 10x10 на знак умножения.
  • Исправлять неправильную расстановку запятых.
  • Разносить неправильно расставленные кавычки.
  • Вставлять неразрывный пробел после инициалов, сцеплять инициалы.
  • Делать неразрывными названия организаций и аббревиатуры форм собственности.
  • Делать неразрывными имя собственное и относящееся к нему сокращение.
  • Не разделять 2007 г., ставить пробел, если его нет.
  • Сцеплять скобки со словами.
  • Заменять 1/2 1/4 3/4 на спецсимволы.
  • Следить за тем, чтобы предлоги и союзы не находились в конце строки.
  • Следить за тем, чтобы частицы бы, ли, же и т.д. не отрывались от предшествующего слова.
  • Форматировать русские денежные суммы, расставляя пробелы в нужных местах.
  • Заменять от 3-х до 5-и точек подряд на троеточие.
  • Притягивать к слову запятые, отделять пробелом от последующего слова.
  • Притягивать к слову восклицательный знак.
  • Делать замену для +-.
  • Обрабатывать вложенные кавычки.
  • Притягивание чисел к знаку умножения.
  • Запятые до «а» и «но».
  • Притягивание «;» к предшествующему слову.
  • Убирает лишние знаки: «??» в «?», «!!!!» в «!!!».
  • Правильные апострофы в «LO'Лайт».
  • Прямая речь.
  • Неразрывные IP-адреса.

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

Простой пример:

require_once('Typographus.php');
$typo = new Typographus();
$text = $typo->process($text);

Для обработки текста в кодировке, отличной от WINDOWS-1251, укажите кодировку в конструкторе(требуется iconv):

$typo = new Typographus('UTF-8');

Если возникнет необходимость не обрабатывать текст внутри какого-либо блока — добавьте его при помощи метода addSafeBlock():

$typo->addSafeBlock('<clear>', '</clear>');

Для задания полностью своего набора безопасных блоков можно сначала очистить набор блоков:

$typo->removeAllSafeBlocks(); 

Если вам понадобится изменить символы замены, воспользуйтесь методом setSym():

$typo->setSym('nbsp', '&nbsp;');

Если хотите, чтобы все буквы ё менялись автоматом на е:

$typo->setOpt(Typographus::CONVERT_E, true);

Если хотите, чтобы спец-знаки были выведены как HTML-сущности:

$typo->setOpt(Typographus::HTML_ENTITIES, true);

Использование типографа в Smarty

Вместе с классом типографа в архиве вы можете найти плагины для Smarty. Скопируйте их в вашу папку plugins.

Если вы хотите подключить постфильтр Smarty (т.е. обработать всю страницу уже после её формирования) — пишем при инициализации Smarty:

$smarty->load_filter('output', 'typograph');

Данный подход не рекомендуется использовать т.к. использование может сказаться на производительности.

Если вам необходимо обработать конкретную переменную - применеям модификатор в шаблоне:

{$text|typograph}

Использование типографа в WordPress, Drupal, CakePHP, Invision Power Board

В архиве прилагаются инструкции и необходимые файлы.