imaginaria/jevix

用于HTML过滤的库,从Visman的 imaginaria项目和AJUR-Media项目分支而来

2.3.0 2022-05-29 22:00 UTC

This package is not auto-updated.

Last update: 2024-09-17 07:06:39 UTC


README

这是一个由TMTM开发,用于自动排版和过滤带有HTML/XHTML标记的文本的系统,最初是为开源项目开发的。最初是PHP版本的Perl Jevix,但现在项目已经大大不同了。

应用场景

  • 主题媒体项目(如Habr等),至少在2020年之前有使用。
  • 无边际的礼物赠送社区Дaru~дар
  • 一个主要面向nix系统和开源世界的俄语互联网资源NIXP.RU
  • 用于博客社交网络和主题社区的免费引擎LiveStreetBigStreetExplay CMS
  • 基于CodeIgniter的网站管理系统Cogear
  • 多功能网站管理系统Alto CMS
  • Codeigniter插件. 与GeSHi协同工作以突出显示语法
  • MODx CMS插件:主页GitHub
  • 用于在Yii中方便使用Jevix的组件Jevix
  • ... 以及更多。

功能

  • 根据规定的规则过滤用户输入的带有HTML标记的文本,允许指定的标签和属性
  • 修正HTML错误并生成有效的HTML或XHTML代码
  • 防止XSS攻击
  • 为俄语应用文本输入规则(排版)

优势

  • Jevix在'最终自动机'上运行,而不是在正则表达式上。因此,反向理念:除了明确允许的以外,其他都是不允许的
  • 一揽子解决XSS过滤、验证、HTML处理和排版

缺点

  • Jevix使用'<br>'分隔行。它不会创建'<p>段落</p>',在现有的架构概念中可能也无法实现
  • 作者不再开发此项目,已经转向Python,并逐渐忘记了PHP语法。但是欢迎PULL请求

使用示例

<?php 
require('jevix.class.php');

$jevix = new AJUR\Jevix\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->cfgSetTagParamDefault('a', 'rel', 'nofollow');     //Парсинг
$res = $jevix->parse('...тут...мог...бы...быть...ваш...текст...'); ?>

系统要求

  • PHP 7.3.0+
  • mbstring模块