Example #1
0
function cleanup()
{
    //include_once 'class.jevix.php';
    $jevix = new Jevix();
    $jevix->cfgAllowTags(array('a', 'img', 'i', 'b', 'u', 'em', 'strong', 'sup', 'br'));
    $jevix->cfgSetTagShort(array('br', 'img'));
    $jevix->cfgSetTagCutWithContent(array('script', 'object', 'iframe', 'style'));
    $jevix->cfgAllowTagParams('a', array('title', 'href'));
    $jevix->cfgAllowTagParams('img', array('src', 'alt' => '#text'));
    $jevix->cfgSetTagParamsRequired('img', 'src');
    $jevix->cfgSetTagParamsRequired('a', 'href');
    $jevix->cfgSetTagParamsAutoAdd('a', array('target' => '_blank'));
    $jevix->cfgSetAutoReplace(array('+/-', '(c)', '(r)', '&'), array('±', '©', '®', '&'));
    $jevix->cfgSetXHTMLMode(true);
    $jevix->cfgSetAutoBrMode(true);
    $jevix->cfgSetAutoLinkMode(false);
    $errors = null;
    if (isset($_POST)) {
        foreach ($_POST as $key => $value) {
            if (!is_array($value)) {
                $_POST[$key] = $jevix->parse($value, $errors);
            }
        }
    }
    if (isset($_GET)) {
        foreach ($_GET as $key => $value) {
            $_GET[$key] = $jevix->parse($value, $errors);
        }
    }
    if (isset($_COOKIE)) {
        foreach ($_COOKIE as $key => $value) {
            $_COOKIE[$key] = $jevix->parse($value, $errors);
        }
    }
    unset($jevix);
}
Example #2
0
//    cfgSetTagChilds($tag, $childs, $isContainerOnly, $isChildOnly)
//       $isContainerOnly : тег является только контейнером для других тегов и не может содержать текст (по умолчанию false)
//       $isChildOnly : вложенные теги не могут присутствовать нигде кроме указанного тега (по умолчанию false)
//$jevix->cfgSetTagChilds('ul', 'li', true, false);
// 8. Устанавливаем атрибуты тегов, которые будут добавлятся автоматически
$jevix->cfgSetTagParamDefault('a', 'rel', null, true);
//$jevix->cfgSetTagParamsAutoAdd('a', array('rel' => 'nofollow'));
//$jevix->cfgSetTagParamsAutoAdd('a', array('name'=>'rel', 'value' => 'nofollow', 'rewrite' => true));
$jevix->cfgSetTagParamDefault('img', 'width', '300px');
$jevix->cfgSetTagParamDefault('img', 'height', '300px');
//$jevix->cfgSetTagParamsAutoAdd('img', array('width' => '300', 'height' => '300'));
//$jevix->cfgSetTagParamsAutoAdd('img', array(array('name'=>'width', 'value' => '300'), array('name'=>'height', 'value' => '300') ));
// 9. Устанавливаем автозамену
$jevix->cfgSetAutoReplace(array('+/-', '(c)', '(r)'), array('±', '©', '®'));
// 10. Включаем или выключаем режим XHTML. (по умолчанию включен)
$jevix->cfgSetXHTMLMode(true);
// 11. Включаем или выключаем режим замены переноса строк на тег <br/>. (по умолчанию включен)
$jevix->cfgSetAutoBrMode(true);
// 12. Включаем или выключаем режим автоматического определения ссылок. (по умолчанию включен)
$jevix->cfgSetAutoLinkMode(true);
// 13. Отключаем типографирование в определенном теге
$jevix->cfgSetTagNoTypography('code');
// 14. Ставим колбэк
$jevix->cfgSetTagCallback('h6', 'test_callback');
function test_callback($content)
{
    return mb_strtoupper($content, 'UTF-8');
}
// 15. Автозамена тегов video на iframe с youtube
$jevix->cfgSetAutoPregReplace(array('/<video>http:\\/\\/(?:www\\.|)youtube\\.com\\/watch\\?v=([a-zA-Z0-9_\\-]+)(&.+)?<\\/video>/Ui', '/<video>http:\\/\\/(?:www\\.|)youtu\\.be\\/([a-zA-Z0-9_\\-]+)(&.+)?<\\/video>/Ui'), array('<iframe width="700" height="394" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>', '<iframe width="700" height="394" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>'));
//Парсинг
Example #3
0
 protected function _getJevix()
 {
     require_once 'jevix.class.php';
     $jevix = new Jevix();
     /* Устанавливаем разрешённые теги (все остальные - запрещенные) */
     $jevix->cfgAllowTags(array('img', 'code', 'pre'));
     /* Устанавливаем коротие теги (не имеющие закрывающего тега) */
     $jevix->cfgSetTagShort(array('img'));
     /* Устанавливаем преформатированные теги (в них всё будет заменятся
        на HTML-сущности) */
     $jevix->cfgSetTagPreformatted(array('pre'));
     /* Устанавливаем теги, которые необходимо вырезать из текста вместе
        с контентом */
     $jevix->cfgSetTagCutWithContent(array('script', 'object', 'iframe', 'style'));
     /* Устанавливаем разрешённые параметры тегов и их допустимые
        значения */
     $jevix->cfgAllowTagParams('img', array('src', 'alt' => '#text', 'title', 'align' => array('right', 'left', 'center'), 'width' => '#int', 'height' => '#int', 'hspace' => '#int', 'vspace' => '#int'));
     /* Устанавливаем параметры тегов являющиеся обязяательными, без них
        вырезает тег, оставляя содержимое */
     $jevix->cfgSetTagParamsRequired('img', 'src');
     /* Включаем режим XHTML (по умолчанию включен) */
     $jevix->cfgSetXHTMLMode(true);
     /* Включаем режим замены переноса строк на тег <br/>. (по умолчанию
        включен) */
     $jevix->cfgSetAutoBrMode(true);
     /* Выключаем режим автоматического определения ссылок. (по умолчанию
        включен) */
     $jevix->cfgSetAutoLinkMode(false);
     /* Отключаем типографирование в определенном теге */
     $jevix->cfgSetTagNoTypography('code');
     return $jevix;
 }
Example #4
0
 private static function checkByJevix($text, $autolink = true)
 {
     $jevix = new Jevix();
     //Конфигурация
     if (user::isAdmin()) {
         // Администратору доверяем больше, разрешаем ему втавлять потенциально опасные теги - object, param, embed, video, iframe
         // 1. Устанавливаем разрешённые теги. (Все не разрешенные теги считаются запрещенными.)
         $jevix->cfgAllowTags(array('table', 'tr', 'td', 'th', 'p', 'a', 'img', 'i', 'b', 'u', 'em', 'strong', 'nobr', 'li', 'ol', 'ul', 'sup', 'abbr', 'pre', 'acronym', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'adabracut', 'br', 'code', 'div', 'span', 'object', 'param', 'embed', 'video', 'code', 'iframe', 'hr'));
         // 2. Устанавливаем коротие теги. (не имеющие закрывающего тега)
         $jevix->cfgSetTagShort(array('br', 'img', 'param', 'embed', 'hr'));
         // 3. Устанавливаем преформатированные теги. (в них все будет заменятся на HTML сущности)
         $jevix->cfgSetTagPreformatted(array('pre'));
         // 4. Устанавливаем теги, которые необходимо вырезать из текста вместе с контентом.
         $jevix->cfgSetTagCutWithContent(array('script', 'javascript', 'style', 'applet'));
         // 5. Устанавливаем разрешённые параметры тегов. Также можно устанавливать допустимые значения этих параметров.
         $jevix->cfgAllowTagParams('div', array('class', 'id', 'style'));
         $jevix->cfgAllowTagParams('p', array('style'));
         $jevix->cfgAllowTagParams('h1', array('style'));
         $jevix->cfgAllowTagParams('h2', array('style'));
         $jevix->cfgAllowTagParams('h3', array('style'));
         $jevix->cfgAllowTagParams('h4', array('style'));
         $jevix->cfgAllowTagParams('h5', array('style'));
         $jevix->cfgAllowTagParams('h6', array('style'));
         $jevix->cfgAllowTagParams('span', array('class', 'id', 'style'));
         $jevix->cfgAllowTagParams('a', array('title', 'href', 'target', 'class', 'id', 'rel', 'style'));
         $jevix->cfgAllowTagParams('img', array('style', 'src', 'alt' => '#text', 'title', 'align' => array('right', 'left', 'center'), 'width' => '#text', 'height' => '#int', 'hspace' => '#int', 'vspace' => '#int'));
         $jevix->cfgAllowTagParams('table', array('border', 'class', 'width', 'align', 'valign', 'style', 'id'));
         $jevix->cfgAllowTagParams('tr', array('height', 'class', 'style'));
         $jevix->cfgAllowTagParams('td', array('colspan', 'rowspan', 'class', 'width', 'height', 'align', 'valign', 'style'));
         $jevix->cfgAllowTagParams('th', array('colspan', 'rowspan', 'class', 'width', 'height', 'align', 'valign', 'style'));
         $jevix->cfgAllowTagParams('object', array('width' => '#text', 'height'));
         $jevix->cfgAllowTagParams('param', array('name', 'value'));
         $jevix->cfgAllowTagParams('embed', array('src', 'type', 'allowscriptaccess', 'allowfullscreen', 'width' => '#text', 'height', 'wmode'));
         $jevix->cfgAllowTagParams('iframe', array('src', 'type', 'allowscriptaccess', 'allowfullscreen', 'width' => '#text', 'height', 'wmode', 'frameborder'));
         // 6. Устанавливаем параметры тегов являющиеся обязательными. Без них вырезает тег оставляя содержимое.
         $jevix->cfgSetTagParamsRequired('img', 'src');
         // 9. Устанавливаем автозамену
         $jevix->cfgSetAutoReplace(array('+/-', '(c)', '(r)'), array('±', '©', '®'));
         // 10. Включаем или выключаем режим XHTML. (по умолчанию включен)
         $jevix->cfgSetXHTMLMode(true);
         // 11. Включаем или выключаем режим замены переноса строк на тег
         $jevix->cfgSetAutoBrMode(false);
         // 12. Включаем или выключаем режим автоматического определения ссылок. (по умолчанию включен)
         $jevix->cfgSetAutoLinkMode($autolink);
         // 13. Отключаем типографирование в определенном теге
         $jevix->cfgSetTagNoTypography('code', 'video', 'iframe');
         // 14. Устанавливаем пустые теги
         $jevix->cfgSetTagIsEmpty('iframe');
     } else {
         // 1. Устанавливаем разрешённые теги. (Все не разрешенные теги считаются запрещенными.)
         $jevix->cfgAllowTags(array('table', 'tr', 'td', 'th', 'p', 'a', 'img', 'i', 'b', 'u', 'em', 'strong', 'nobr', 'li', 'ol', 'ul', 'sup', 'abbr', 'pre', 'acronym', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'adabracut', 'br', 'code', 'div', 'span'));
         // 2. Устанавливаем коротие теги. (не имеющие закрывающего тега)
         $jevix->cfgSetTagShort(array('br', 'img'));
         // 3. Устанавливаем преформатированные теги. (в них все будет заменятся на HTML сущности)
         $jevix->cfgSetTagPreformatted(array('pre'));
         // 4. Устанавливаем теги, которые необходимо вырезать из текста вместе с контентом.
         $jevix->cfgSetTagCutWithContent(array('script', 'javascript', 'object', 'iframe', 'style', 'embed', 'applet'));
         // 5. Устанавливаем разрешённые параметры тегов. Также можно устанавливать допустимые значения этих параметров.
         $jevix->cfgAllowTagParams('div', array('class', 'id'));
         $jevix->cfgAllowTagParams('span', array('class', 'id'));
         $jevix->cfgAllowTagParams('a', array('title', 'href', 'target', 'class', 'id'));
         $jevix->cfgAllowTagParams('img', array('src', 'alt' => '#text', 'title', 'align' => array('right', 'left', 'center'), 'width' => '#int', 'height' => '#int', 'hspace' => '#int', 'vspace' => '#int'));
         $jevix->cfgAllowTagParams('table', array('border', 'class', 'width', 'align', 'valign'));
         $jevix->cfgAllowTagParams('tr', array('height', 'class'));
         $jevix->cfgAllowTagParams('td', array('colspan', 'rowspan', 'class', 'width', 'height', 'align', 'valign'));
         $jevix->cfgAllowTagParams('th', array('colspan', 'rowspan', 'class', 'width', 'height', 'align', 'valign'));
         // 6. Устанавливаем параметры тегов являющиеся обязательными. Без них вырезает тег оставляя содержимое.
         $jevix->cfgSetTagParamsRequired('img', 'src');
         //$jevix->cfgSetTagParamsRequired('a', 'href');
         // 7. Устанавливаем теги которые может содержать тег контейнер
         //    cfgSetTagChilds($tag, $childs, $isContainerOnly, $isChildOnly)
         //       $isContainerOnly : тег является только контейнером для других тегов и не может содержать текст (по умолчанию false)
         //       $isChildOnly : вложенные теги не могут присутствовать нигде кроме указанного тега (по умолчанию false)
         //$jevix->cfgSetTagChilds('ul', 'li', true, false);
         // 8. Устанавливаем атрибуты тегов, которые будут добавлятся автоматически
         //$jevix->cfgSetTagParamDefault('a', 'rel', null, true);
         //$jevix->cfgSetTagParamsAutoAdd('a', array('rel' => 'nofollow'));
         //$jevix->cfgSetTagParamsAutoAdd('a', array('name'=>'rel', 'value' => 'nofollow', 'rewrite' => true));
         //$jevix->cfgSetTagParamDefault('img', 'width',  '300px');
         //$jevix->cfgSetTagParamDefault('img', 'height', '300px');
         //$jevix->cfgSetTagParamsAutoAdd('img', array('width' => '300', 'height' => '300'));
         //$jevix->cfgSetTagParamsAutoAdd('img', array(array('name'=>'width', 'value' => '300'), array('name'=>'height', 'value' => '300') ));
         // 9. Устанавливаем автозамену
         $jevix->cfgSetAutoReplace(array('+/-', '(c)', '(r)'), array('±', '©', '®'));
         // 10. Включаем или выключаем режим XHTML. (по умолчанию включен)
         $jevix->cfgSetXHTMLMode(true);
         // 11. Включаем или выключаем режим замены переноса строк на тег <br/>. (по умолчанию включен)
         $jevix->cfgSetAutoBrMode(false);
         // 12. Включаем или выключаем режим автоматического определения ссылок. (по умолчанию включен)
         $jevix->cfgSetAutoLinkMode($autolink);
         // 13. Отключаем типографирование в определенном теге
         $jevix->cfgSetTagNoTypography('code');
     }
     // Переменная, в которую будут записыватся ошибки
     $errors = null;
     return $jevix->parse($text, $errors);
 }