Средство для фильтрации HTML и автоматического типографирования
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
tests
jevix.class.php
readme.mediawiki
symclass.php

readme.mediawiki

Table of Contents

Jevix — средство для фильтрации HTML

Система автоматического типографирования и фильтрации текста с HTML/XHTML разметкой, разработанная в ТМ™ (thematicmedia.ru) для собственных проектов с открытым исходным кодом. Изначально появился как php-версия перлового Jevix-а, сейчас проекты сильно разошлись.

Где используется

Возможности

  • Фильтрация введённого пользователем текста с HTML разметкой на основе заданных правил о разрешённых тегах и атрибутах
  • Исправление ошибок HTML и формирование валидного HTML или XHTML кода
  • Предотвращение XSS-атак
  • Применение правил набора текстов (типографика) для русского языка

Преимущества

  • Jevix работает на конечном автомате, а не на регулярных выражениях. Соответственно обратная идеология: вместо запрещающих правил разрешающие (всё что не разрешено — запрещено)
  • XSS-фильтация, валидация, обработка HTML и типографирование в одном флаконе, в одном файле

Недостатки

  • Jevix разделяет строки <br>-ами. Делать <p>абзацы</p> он не умеет, и, в существующей архитектурной концепции вряд ли научится
  • Автор больше не развивает проект, перешёл на Python и постепенно забывает синтаксис PHP. Однако PULL-реквесты приветствуются

Пример использования

    $jevix = new Jevix();
    
    //Конфигурация
    
    // Устанавливаем разрешённые теги. (Все не разрешенные теги считаются запрещенными.)
    $jevix->cfgAllowTags(array('a', 'img', 'strong', 'ul', 'li', 'h1', 'h2'));
    
    // Устанавливаем разрешённые параметры тегов.
    $jevix->cfgAllowTagParams('a', array('title', 'href'));
    
    // Устанавливаем параметры тегов являющиеся обязяательными. Без них вырезает тег оставляя содержимое.
    $jevix->cfgSetTagParamsRequired('a', 'href');
    
    // Устанавливаем теги которые может содержать тег контейнер
    $jevix->cfgSetTagChilds('ul', 'li', true, false);
    
    // Устанавливаем атрибуты тегов, которые будут добавлятся автоматически
    $jevix->cfgSetTagParamsAutoAdd('a', array('rel' => 'nofollow'));
    
    //Парсинг
    $res = $jevix->parse('...тут...мог...бы...быть...ваш...текст...');
    ?>

Системные требования

  • PHP5
  • Модуль mbstring
  • UTF-8

Возможные настройки в .htaccess для корректной работы mbstring

    php_value       mbstring.func_overload      0
    php_value       default_charset             UTF-8
    php_value       mbstring.language           Russian
    php_value       mbstring.internal_encoding  UTF-8