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); }
// 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>')); //Парсинг
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; }
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); }