Exemple #1
0
 protected function validateFields()
 {
     require_once MODX_CORE_PATH . 'components/util/jevix.class.php';
     $jevix = new Jevix();
     $fields = $this->getFields();
     foreach ($fields as $field => $d) {
         if (!$d['noparse']) {
             $s = $this->getProperty($field);
             $f = $jevix->parse($s, $parse_error);
             //пропарсить поле
             if (empty($parse_error)) {
                 $this->setProperty($field, $f);
             } else {
                 $this->addFieldError($field, implode(', ', $parse_error));
                 continue;
             }
         }
         if ($d['required'] && !$this->getProperty($field)) {
             $error = !empty($d['error_message']) ? $d['error_message'] : 'Поле заполненно не корректно';
             $this->addFieldError($field, $error);
             continue;
         }
         switch ($field) {
             case 'email':
                 if (!preg_match('/^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,4})$/', $this->getProperty($field))) {
                     $this->addFieldError($field, 'Укажите корректный емейл');
                 }
                 break;
             default:
         }
     }
     return !$this->hasErrors();
 }
Exemple #2
0
function comments_add()
{
    $parent_id = (int) $_POST['parent_id'];
    $author = mysql_escape_string($_POST['author']);
    $email = mysql_escape_string($_POST['email']);
    $jevix = new Jevix();
    $jevix->cfgAllowTags(array('p', 'blockquote', 'cite', 'b', 'i', 'br'));
    $text = $jevix->parse($_POST['text']);
    $text = mysql_escape_string($text);
    $hash = mysql_escape_string($_POST['hash']);
    if (!$author) {
        return '{"error":"empty_author"}';
    }
    if (!$email) {
        return '{"error":"empty_email"}';
    }
    if (!$text) {
        return '{"error":"empty_text"}';
    }
    setcookie('cmt_name', $_POST['author'], time() + 86400 * 365);
    setcookie('cmt_email', $_POST['email'], time() + 86400 * 365);
    $_COOKIE['cmt_name'] = $_POST['author'];
    $_COOKIE['cmt_email'] = $_POST['email'];
    $sql = "\n\t\tINSERT INTO prefix_comments\n\t\t(parent_id, hash, author, email, text)\n\t\tVALUES ({$parent_id}, '{$hash}', '{$author}', '{$email}', '{$text}')";
    db()->query($sql);
    return comments_block($hash, true);
}
Exemple #3
0
	/**
	 * Парсинг текста с помощью Jevix
	 *
	 * @param string $sText
	 * @param array $aError
	 * @return string
	 */
	public function JevixParser($sText,&$aError=null) {
		// Если конфиг пустой, то загружаем его
		if (!count($this->oJevix->tagsRules)) {
			$this->LoadJevixConfig();
		}
		$sResult=$this->oJevix->parse($sText,$aError);
		return $sResult;
	}
 public function parse($sText, &$aError = null)
 {
     $sText = $this->FlashParamParser($sText);
     $sText = parent::parse($sText, $aError);
     $sText = $this->VideoParser($sText);
     $sText = $this->CodeSourceParser($sText);
     return $sText;
 }
Exemple #5
0
<?php

/**
 * Тестовый пример работы Jevix-а
 *
 * За помощь в написании примера спасибо Александру (http://vaart.habrahabr.ru, indrid@mail.ru)
 */
require '../jevix.class.php';
$jevix = new Jevix();
//Конфигурация
// 1. Устанавливаем разрешённые теги. (Все не разрешенные теги считаются запрещенными.)
$jevix->cfgAllowTags(array('a', 'img', 'i', 'b', 'u', 'em', 'strong', 'nobr', 'li', 'ol', 'ul', 'sup', 'abbr', 'pre', 'acronym', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'adabracut', 'br', 'code', 'video'));
// 2. Устанавливаем коротие теги. (не имеющие закрывающего тега)
$jevix->cfgSetTagShort(array('br', 'img'));
// 3. Устанавливаем преформатированные теги. (в них все будет заменятся на HTML сущности)
$jevix->cfgSetTagPreformatted(array('pre'));
// 4. Устанавливаем теги, которые необходимо вырезать из текста вместе с контентом.
$jevix->cfgSetTagCutWithContent(array('script', 'object', 'iframe', 'style'));
// 5. Устанавливаем разрешённые параметры тегов. Также можно устанавливать допустимые значения этих параметров.
$jevix->cfgAllowTagParams('a', array('title', 'href'));
$jevix->cfgAllowTagParams('img', array('src', 'alt' => '#text', 'title', 'align' => array('right', 'left', 'center'), 'width' => '#int', 'height' => '#int', 'hspace' => '#int', 'vspace' => '#int'));
// 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);
<?php

/**
 * Тестовый пример работы Jevix-а
 *
 * За помощь в написании примера спасибо Александру (http://vaart.habrahabr.ru, indrid@mail.ru)
 */
require '../jevix.class.php';
$jevix = new Jevix();
//Конфигурация
// 1. Устанавливаем разрешённые теги. (Все не разрешенные теги считаются запрещенными.)
$jevix->cfgAllowTags(array('a', 'img', 'i', 'b', 'u', 'em', 'strong', 'nobr', 'li', 'ol', 'ul', 'sup', 'abbr', 'pre', 'acronym', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'adabracut', 'br', 'code'));
// 2. Устанавливаем коротие теги. (не имеющие закрывающего тега)
$jevix->cfgSetTagShort(array('br', 'img'));
// 3. Устанавливаем преформатированные теги. (в них все будет заменятся на HTML сущности)
$jevix->cfgSetTagPreformatted(array('pre'));
// 4. Устанавливаем теги, которые необходимо вырезать из текста вместе с контентом.
$jevix->cfgSetTagCutWithContent(array('script', 'object', 'iframe', 'style'));
// 5. Устанавливаем разрешённые параметры тегов. Также можно устанавливать допустимые значения этих параметров.
$jevix->cfgAllowTagParams('a', array('title', 'href'));
$jevix->cfgAllowTagParams('img', array('src', 'alt' => '#text', 'title', 'align' => array('right', 'left', 'center'), 'width' => '#int', 'height' => '#int', 'hspace' => '#int', 'vspace' => '#int'));
// 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);
Exemple #7
0
 /**
  * Создание сниппета
  *
  * @param string $sText
  *
  * @return string
  */
 protected function _makeSnippet($sText)
 {
     $aError = array();
     $sRegexp = $this->_preparePattern();
     // * Если задано, то вырезаем все теги
     if ($this->bSkipAllTags) {
         $sText = strip_tags($sText);
     } else {
         $sText = $this->oJevix->parse($sText, $aError);
         $sText = str_replace('<br/>', '', $sText);
     }
     //$sText = str_replace(' ', '  ', $sText);
     if (mb_preg_match_all($sRegexp, $sText, $aMatches, PREG_OFFSET_CAPTURE)) {
         // * Создаем набор фрагментов текста
         $sSnippet = '';
         $aFragmentSets = array();
         $nFragmentSetsCount = -1;
         $nCount = 0;
         $aLastSet = array();
         $nLastLen = 0;
         foreach ($aMatches[0] as $aMatch) {
             $sFrTxt = $aMatch[0];
             $nFrPos = $aMatch[1];
             $nFrLen = mb_strlen($sFrTxt);
             // Создаем сеты фрагментов, чтобы близлежащие слова попали в один сет
             if ($nFragmentSetsCount == -1 || $nLastLen == 0) {
                 $aLastSet = array('txt' => $sFrTxt, 'pos' => $nFrPos, 'len' => $nFrLen);
                 $nLastLen = $nFrPos + $nFrLen;
                 $aFragmentSets[++$nFragmentSetsCount][] = $aLastSet;
             } else {
                 if ($nFrPos + $nFrLen - $aLastSet['pos'] < $this->nShippetLength) {
                     $aFragmentSets[$nFragmentSetsCount][] = array('txt' => $sFrTxt, 'pos' => $nFrPos, 'len' => $nFrLen);
                     $nLastLen = $nFrPos + $nFrLen - $aLastSet['pos'];
                 } else {
                     $aLastSet = array('txt' => $sFrTxt, 'pos' => $nFrPos, 'len' => $nFrLen);
                     $nLastLen = $nFrPos + $nFrLen;
                     $aFragmentSets[++$nFragmentSetsCount][] = $aLastSet;
                 }
             }
         }
         $aFragments = array();
         $nPos = 0;
         foreach ($aFragmentSets as $aSet) {
             $nLen = 0;
             foreach ($aSet as $aWord) {
                 if ($nLen == 0) {
                     $nLen = $aWord['len'];
                     $nPos = $aWord['pos'];
                 } else {
                     $nLen = $aWord['pos'] + $aWord['len'] - $nPos;
                 }
             }
             $aFragments[] = $this->_makeSnippetFragment($sText, $aSet, $nPos, $nLen);
             if ($this->nSnippetMaxFragments > 0 && ++$nCount >= $this->nSnippetMaxFragments) {
                 break;
             }
         }
         foreach ($aFragments as $sFragment) {
             $sSnippet .= $this->sSnippetBeforeFragment . $sFragment . $this->sSnippetAfterFragment;
         }
     } else {
         if (mb_strlen($sText) > $this->nShippetMaxLength) {
             $sSnippet = mb_substr($sText, 0, $this->nShippetMaxLength) . '&hellip;';
         } else {
             $sSnippet = $sText;
         }
     }
     return $sSnippet;
 }
Exemple #8
0
 private function getJevix($is_auto_br, $build_redirect_link)
 {
     cmsCore::loadLib('jevix.class', 'Jevix');
     $jevix = new Jevix();
     // Устанавливаем разрешённые теги. (Все не разрешенные теги считаются запрещенными.)
     $jevix->cfgAllowTags(array('p', 'br', 'span', 'div', 'a', 'img', 'b', 'i', 'u', 's', 'del', 'em', 'strong', 'sup', 'sub', 'hr', 'font', 'ul', 'ol', 'li', 'table', 'tbody', 'thead', 'tfoot', 'tr', 'td', 'th', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'pre', 'code', 'blockquote', 'video', 'audio', 'youtube', 'facebook', 'object', 'param', 'embed', 'iframe'));
     // Устанавливаем коротие теги. (не имеющие закрывающего тега)
     $jevix->cfgSetTagShort(array('br', 'img', 'hr', 'embed'));
     // Устанавливаем преформатированные теги. (в них все будет заменятся на HTML сущности)
     $jevix->cfgSetTagPreformatted(array('pre', 'video'));
     // Устанавливаем теги, которые необходимо вырезать из текста вместе с контентом.
     $jevix->cfgSetTagCutWithContent(array('script', 'style', 'meta'));
     $jevix->cfgSetTagIsEmpty(array('param', 'embed', 'a', 'iframe', 'div'));
     // Устанавливаем разрешённые параметры тегов. Также можно устанавливать допустимые значения этих параметров.
     $jevix->cfgAllowTagParams('a', array('href' => '#link', 'name' => '#text', 'target' => '#text', 'class' => '#text'));
     $jevix->cfgAllowTagParams('img', array('src', 'style' => '#text', 'alt' => '#text', 'title' => '#text', 'align' => array('right', 'left', 'center'), 'width' => '#int', 'height' => '#int', 'hspace' => '#int', 'vspace' => '#int', 'class' => '#text'));
     $jevix->cfgAllowTagParams('span', array('style' => '#text'));
     $jevix->cfgAllowTagParams('object', array('width' => '#int', 'height' => '#int', 'data' => array('#domain' => array('youtube.com', 'rutube.ru', 'vimeo.com', 'vk.com')), 'type' => '#text'));
     $jevix->cfgAllowTagParams('param', array('name' => '#text', 'value' => '#text'));
     $jevix->cfgAllowTagParams('embed', array('src' => array('#domain' => array('youtube.com', 'rutube.ru', 'vimeo.com', 'vk.com')), 'type' => '#text', 'allowscriptaccess' => '#text', 'allowfullscreen' => '#text', 'width' => '#int', 'height' => '#int', 'flashvars' => '#text', 'wmode' => '#text'));
     $jevix->cfgAllowTagParams('iframe', array('width' => '#int', 'height' => '#int', 'style' => '#text', 'frameborder' => '#int', 'allowfullscreen' => '#text', 'src' => array('#domain' => array('youtube.com', 'rutube.ru', 'vimeo.com', 'vk.com', 'my.mail.ru', 'facebook.com'))));
     $jevix->cfgAllowTagParams('table', array('width' => '#int', 'height' => '#int', 'cellpadding' => '#int', 'cellspacing' => '#int', 'border' => '#int', 'style' => '#text', 'align' => '#text', 'valign' => '#text'));
     $jevix->cfgAllowTagParams('td', array('width' => '#int', 'height' => '#int', 'style' => '#text', 'align' => '#text', 'valign' => '#text', 'colspan' => '#int', 'rowspan' => '#int'));
     $jevix->cfgAllowTagParams('th', array('width' => '#int', 'height' => '#int', 'style' => '#text', 'align' => '#text', 'valign' => '#text', 'colspan' => '#int', 'rowspan' => '#int'));
     $jevix->cfgAllowTagParams('p', array('style' => '#text'));
     $jevix->cfgAllowTagParams('div', array('style' => '#text', 'class' => '#text'));
     // Устанавливаем параметры тегов являющиеся обязательными. Без них вырезает тег оставляя содержимое.
     $jevix->cfgSetTagParamsRequired('img', 'src');
     $jevix->cfgSetTagParamsRequired('a', 'href');
     // Устанавливаем теги которые может содержать тег контейнер
     $jevix->cfgSetTagChilds('ul', array('li'), false, true);
     $jevix->cfgSetTagChilds('ol', array('li'), false, true);
     $jevix->cfgSetTagChilds('table', array('tr', 'tbody', 'thead', 'tfoot', 'th', 'td'), false, true);
     $jevix->cfgSetTagChilds('tbody', array('tr', 'td', 'th'), false, true);
     $jevix->cfgSetTagChilds('thead', array('tr', 'td', 'th'), false, true);
     $jevix->cfgSetTagChilds('tfoot', array('tr', 'td', 'th'), false, true);
     $jevix->cfgSetTagChilds('tr', array('td'), false, true);
     $jevix->cfgSetTagChilds('tr', array('th'), false, true);
     // Устанавливаем автозамену
     $jevix->cfgSetAutoReplace(array('+/-', '(c)', '(с)', '(r)', '(C)', '(С)', '(R)'), array('±', '©', '©', '®', '©', '©', '®'));
     // включаем режим замены переноса строк на тег <br/>
     $jevix->cfgSetAutoBrMode($is_auto_br);
     // включаем режим автоматического определения ссылок
     $jevix->cfgSetAutoLinkMode(true);
     // если нужно обрабатывать внешние ссылки в редирект
     if ($build_redirect_link) {
         $jevix->cfgSetTagCallbackFull('a', array($this, 'linkRedirectPrefix'));
     }
     // Отключаем типографирование в определенном теге
     $jevix->cfgSetTagNoTypography('pre', 'youtube', 'iframe');
     // Ставим колбэк для youtube
     $jevix->cfgSetTagCallbackFull('youtube', array($this, 'parseYouTubeVideo'));
     // Ставим колбэк для facebook
     $jevix->cfgSetTagCallbackFull('facebook', array($this, 'parseFacebookVideo'));
     // Ставим колбэк на iframe
     $jevix->cfgSetTagCallbackFull('iframe', array($this, 'parseIframe'));
     // Ставим колбэк для кода
     $jevix->cfgSetTagCallback('code', array($this, 'parseCode'));
     return $jevix;
 }
Exemple #9
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;
 }
 /**
  * @param string $sText
  * @param array  $aErrors
  *
  * @return string
  */
 public function Parse($sText, &$aErrors)
 {
     return parent::parse($sText, $aErrors);
 }
Exemple #11
0
<?php

/** @var array $scriptProperties */
/** @var Jevix $Jevix */
if (!$modx->loadClass('jevix', MODX_CORE_PATH . 'components/jevix/model/jevix/', false, true)) {
    return 'Could not load Jevix!';
}
$Jevix = new Jevix($modx, $scriptProperties);
return $Jevix->process($scriptProperties['input']);
Exemple #12
0
 /**
  * Удаляет из строки все теги, используется как аналог strip_tags там,
  * где последний удаляет часть текста вместе с не валидными тегами, например
  * при обработке строки ">>> Hello <<<". Подробнее в задаче #151
  * {@see https://github.com/altocms/altocms/issues/151}
  *
  * @param $sText
  * @param null $aError
  * @return string
  */
 public function RemoveAllTags($sText, &$aError = null)
 {
     F::File_IncludeLib('Jevix/jevix.class.php');
     /** @var Jevix $oJevix */
     $oJevix = new Jevix();
     return htmlspecialchars_decode($oJevix->parse($sText, $aError));
 }
Exemple #13
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);
 }
Exemple #14
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('±', '©', '®', '&amp;'));
    $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);
}
Exemple #15
0
 public static function getInstance(){
     if (!isset(self::$instance)){
         self::$instance = new self();
     }
     return self::$instance;
 }
Exemple #16
0
 /**
  * Парсинг текста с помощью Jevix
  *
  * @param string $sText
  * @param array $aError
  * @return string
  */
 public function JevixParser($sText, &$aError = null)
 {
     $sResult = $this->oJevix->parse($sText, $aError);
     return $sResult;
 }