CodeIgniter → Парсер для CodeIgniter (Jevix, GeSHi, Video)
Представляю вашему вниманию парсер для использования в CodeIgniter.
Библиотека умеет обрабатывать html текст по заданным правилам, автоматически закрывать незакрытые теги, обнаруживать XSS атаки в тексте, подсвечивать код, показывать видео обрабатывая тег video для популярных сервисов.
Состоит из:
Текст должен быть в кодировке utf-8.
Настройка:
Использование:
Загрузка библиотеки:
Внимание, сразу после загрузки библиотеки не происходит загрузка и инициализация входящих в состав компонентов. Они инициализируются только после передачи библиотеки текста, если конечно не отключена в конфигурации.
Во всей этой связке Jevix очень важный компонент с его помощью можно сформировать строгий отформатированный html, он также имеет механизм для защиты от XSS.
Если вам нужно обрезать статью, то лучше поступить так:
В данном случае может оказаться что мы обрежем текст и у нас получаться незакрытые теги, и здесь Jevix так же хорошо справиться со своей задачей, он закроет такие теги автоматически.
Можно использовать методы по отдельности:
Внимание, на них не расспространяются настройки (будут работать всегда):
Video
Для вставки в статью видеоролика нужно написать:
Подсветка кода
Компонент GeSHi загружается и инициализируется только если в тексте имеется тег с кодом.
После обработки текста желательно кэшировать результат, тем более если объём текста большой.
Скачать
typograf_0.1.zip (540Kb)
Библиотека умеет обрабатывать html текст по заданным правилам, автоматически закрывать незакрытые теги, обнаруживать XSS атаки в тексте, подсвечивать код, показывать видео обрабатывая тег video для популярных сервисов.
Состоит из:
- Jevix — www.code.google.com/p/jevix/ — средство для автоматического применения правил набора текстов.
- 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;
Как видно из примера настроек по форматированию текста предостаточно, комбинируя их можно добиться давольно таки интересного результата. $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);
Теперь текст обработан согласно заданным выше настройкам. $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);
$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(); // Обработка текста
$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;
$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, Типографика


Комментарии:
Ответить
Ответить
Ответить
Ответить
Возвращает:
Ответить
пс. тут режет теги поэтому написал в скобках и порусски)
Ответить
Ответить
Ответить