コード例 #1
0
ファイル: html_filter.php プロジェクト: asphix/icms2
 private function getJevix($is_auto_br)
 {
     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', 'object', 'param', 'embed', 'iframe'));
     // Устанавливаем коротие теги. (не имеющие закрывающего тега)
     $jevix->cfgSetTagShort(array('br', 'img', 'hr'));
     // Устанавливаем преформатированные теги. (в них все будет заменятся на HTML сущности)
     $jevix->cfgSetTagPreformatted(array('pre'));
     // Устанавливаем теги, которые необходимо вырезать из текста вместе с контентом.
     $jevix->cfgSetTagCutWithContent(array('script', 'style', 'meta'));
     $jevix->cfgSetTagIsEmpty(array('iframe', 'param'));
     // Устанавливаем разрешённые параметры тегов. Также можно устанавливать допустимые значения этих параметров.
     $jevix->cfgAllowTagParams('a', array('href', 'name' => '#text'));
     $jevix->cfgAllowTagParams('img', array('src', 'style', 'alt' => '#text', 'title' => '#text', 'align' => array('right', 'left', 'center'), 'width' => '#int', 'height' => '#int', 'hspace' => '#int', 'vspace' => '#int'));
     $jevix->cfgAllowTagParams('span', array('style'));
     $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', 'src' => array('#domain' => array('youtube.com', 'rutube.ru', 'vimeo.com', 'vk.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'));
     $jevix->cfgAllowTagParams('div', array('style'));
     // Устанавливаем параметры тегов являющиеся обязательными. Без них вырезает тег оставляя содержимое.
     $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);
     // Отключаем типографирование в определенном теге
     $jevix->cfgSetTagNoTypography('pre', 'youtube', 'iframe');
     // Ставим колбэк для youtube
     $jevix->cfgSetTagCallback('youtube', array($this, 'parseYouTubeVideo'));
     // Ставим колбэк для кода
     $jevix->cfgSetTagCallback('code', array($this, 'parseCode'));
     return $jevix;
 }
コード例 #2
0
ファイル: jevixtest.php プロジェクト: abssoft/Jevix
$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>'));
//Парсинг
// Исходный текст
$text = 'Обработка "кавычек" и "вложенных "друг в друга" кавычек".
Расстановка пробелов после запятых,двоеточия,знаков вопроса , и восклицания !Круто?
А после точек - нет.....Зато,парсер понимает тире,отличает его от-дефиса и знает про многоточие!!!!!
Не больше 3-х восклицательных знаков подряд (c).
В этих случаях лишние пробелы не появятся: 2,35%,смайлики ;-? или :-> (да, html теги фильтровать мы умеем)
- диалог +/-5<br>
- првет,лишние br нам не страшны