CodeIgniterПарсер для CodeIgniter (Jevix, GeSHi, Video)

Опубликовано 9 февраля 2009 Комментарии (8)

Представляю вашему вниманию парсер для использования в CodeIgniter.
Библиотека умеет обрабатывать html текст по заданным правилам, автоматически закрывать незакрытые теги, обнаруживать XSS атаки в тексте, подсвечивать код, показывать видео обрабатывая тег video для популярных сервисов.
Состоит из:
  1. Jevix — www.code.google.com/p/jevix/ — средство для автоматического применения правил набора текстов.
  2. GeSHi — www.qbnz.com/highlighter/ — подсветка кода.
Требование:
Текст должен быть в кодировке utf-8.

Настройка:
//Включение или выключение обработки текста, по умолчанию FALSE
$config['on'] = TRUE;

//Включает или выключает обработку текста типографом Jevix, по умолчанию TRUE
$config['parse_text'] = TRUE;

//Включает или выключает обработку тега <video>, по умолчанию TRUE
$config['parse_video'] = TRUE;

//Включает или выключает подсветку кода, по умолчанию TRUE
$config['parse_code'] = TRUE;

//Путь до библиотек
$config['library_path'] = '';

//Дальше пойдёт настройка Jevix все указанные ниже параметры установлены в библиотеке по умолчанию, если вы не хотите их менять, просто не указывайте.
 
//Перечисляются разрешённые теги, остальные будут удалены
$config['jevix_config']['cfgAllowTags'] = array('cut','a', 'img', 'i', 'b', 'u', 's', 'video', 'em',  'strong', 'nobr', 'li', 'ol', 'ul', 'sup', 'abbr', 'sub', 'acronym', 'h4', 'h5', 'h6', 'br', 'hr', 'pre', 'code');

//Коротие теги которые разрешены, остальные удаляться
$config['jevix_config']['cfgSetTagShort'] = array('br','img', 'hr', 'cut');

//Тэги в которых не будет осуществляться форматирование
$config['jevix_config']['cfgSetTagPreformatted'] = array('pre','code');

//Разрешённые параметры тегов
$config['jevix_config']['cfgAllowTagParams'] = array('img' => array('src', 'alt', 'title', 'align'), 'a' => array('title', 'href'));

//Перечисляются теги и их обязательные параметры, если таких нет то тэг удаляется
$config['jevix_config']['cfgSetTagParamsRequired'] = array('img' => 'src', 'a' => 'href');

//Перечисляются теги и параметры которые подставить если данный параметр не указан
$config['jevix_config']['cfgSetTagParamsAutoAdd'] = array('a' => array('rel' => 'nofolow'));

//Перечисляются теги которые необходимо удалить вместе с содержимым
$config['jevix_config']['cfgSetTagCutWithContent'] = array('script', 'object', 'iframe', 'style');

//Перечисляются вложенные теги
$config['jevix_config']['cfgSetTagChilds'] = array('ul' => array('li'), 'ol' => array('li'));

//Отключение авто-добавления
 
$config['jevix_config']['cfgSetAutoBrMode'] = true;

//Включение или выключение режима XTML
$config['jevix_config']['cfgSetXHTMLMode'] = true;

//Включение или выключение режима автоматического определения ссылок
$config['jevix_config']['cfgSetAutoLinkMode'] = true;
Как видно из примера настроек по форматированию текста предостаточно, комбинируя их можно добиться давольно таки интересного результата.

Использование:
Загрузка библиотеки:
$this->load->library('Typograf', $config);

Внимание, сразу после загрузки библиотеки не происходит загрузка и инициализация входящих в состав компонентов. Они инициализируются только после передачи библиотеки текста, если конечно не отключена в конфигурации.
$text = 'Здесь текст который нужно обработать.';
$text = $this->typograf->run($text);
Теперь текст обработан согласно заданным выше настройкам.

Во всей этой связке Jevix очень важный компонент с его помощью можно сформировать строгий отформатированный html, он также имеет механизм для защиты от XSS.

Если вам нужно обрезать статью, то лучше поступить так:
$this->load->library('Typograf', $config);
$this->load->helper('text');
 
$text = 'Представим что здесь у нас большой и сложный html текст.';
//Сначала обрезаем
$text = word_limiter($text, 4);
//Потом обрабатываем
$text = $this->typograf->run($text);

В данном случае может оказаться что мы обрежем текст и у нас получаться незакрытые теги, и здесь Jevix так же хорошо справиться со своей задачей, он закроет такие теги автоматически.

Можно использовать методы по отдельности:
$this->typograf->code_parser(); //  Подсветка кода
$this->typograf->video_parser(); // Обработка тега <video>
$this->typograf->text_parser(); // Обработка текста

Внимание, на них не расспространяются настройки (будут работать всегда):
//Включение или выключение обработки текста, по умолчанию FALSE
$config['on'] = TRUE;
 
//Включает или выключает обработку текста типографом Jevix, по умолчанию TRUE
$config['parse_text'] = TRUE;
 
//Включает или выключает обработку тега <video>, по умолчанию TRUE
$config['parse_video'] = TRUE;
 
//Включает или выключает подсветку кода, по умолчанию TRUE
$config['parse_code'] = TRUE;

Video
Для вставки в статью видеоролика нужно написать:
<video>Ссылка на ролик</video>
Работает только для rutube.ru и youtube.com

Подсветка кода
Компонент GeSHi загружается и инициализируется только если в тексте имеется тег с кодом.
После обработки текста желательно кэшировать результат, тем более если объём текста большой.

Скачать
typograf_0.1.zip (540Kb)

Метки: CodeIgniter, PHP, Типографика

Комментарии:

ferry-very-good 10 февраль 2009, 16:17
Интересно, щас надо попробовать)))
Ответить
drunk 01 июль 2009, 14:28
как устанавливтьа? папка libraries в архиве пуста :(
Ответить
drunk 01 июль 2009, 15:40
и вообще, вы предлагаете конфиг веьс расписывтьа в контроллере? нифига он не видит кофнига из папки config, даже с $this->load->config('typograf')
Ответить
drunk 01 июль 2009, 16:12
простите, испрвился, понял. Но инструкция гавёная всё же :/
Ответить
Evgeny 09 сентябрь 2009, 12:14
У меня почему-то не работает парсинг видео тега.
Возвращает:

Ответить
Evgeny 09 сентябрь 2009, 12:17
[видео рел=нофолоу] [а ссылка на ролик] ссылка на ролик [/а] [/видео]

пс. тут режет теги поэтому написал в скобках и порусски)
Ответить
Evgeny 09 сентябрь 2009, 12:19
а все дошло, парсинг видео не работает с cfgSetAutoLinkMode' => true,
Ответить
Ladygin 11 сентябрь 2009, 13:16
Да верно, выделение ссылок в Jevix нужно отключать.
Ответить

Комментировать

*Логин:

*E-mail:
(сохранность гарантируем)

Сайт:

Aptana Class CodeIgniter Flash IDE JavaScript Linux PHP PostgreSQL SSH Ubuntu Zend Framework cms css jQuery online-приложения wordpress Базы данных Книги Кэширование ООП Ссылки Типографика вдохновение вебдизайн виджеты дизайн заголовки инструменты поддомены разработка регистрация

Блог
Новости

Новости индустрии

Пожертвовать