Типограф (PHP5)
- Страничка: http://rmcreative.ru/blog/post/tipograf
- Онлайн-версия: http://rmcreative.ru/typograph/
Авторы:
- Максим Оранский, первоначальный код, тестирование, правила.
- Александр Макаров, код, тестирование, правила, плагины для Smarty, дальнейшая поддержка.
При создании типографа помимо личного опыта использовались:
Спасибо:
- -=Ustas=-
- faZeful
- Naruvi (Begemot)
- grasshopper
- eagle
- SHAman
- Eagle
- grasshopper
- Max
- Reki
- Zav
- sadhaka
- Алексей Волкогон
… и всем, кто пользуется типографом и сообщает об ошибках.
Отдельное спасибо 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', ' ');
Если хотите, чтобы все буквы ё менялись автоматом на е:
$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
В архиве прилагаются инструкции и необходимые файлы.