搜索
首页PHP 库Other librarieshtmlpurifierPHP过滤库
htmlpurifierPHP过滤库

require_once '/path/to/HTMLPurifier.auto.php';

根据ThinkPHP的规范,对于第三方扩展,不符合ThinkPHP开发规范的,需要将HTMLPurifier放入到Library/Vendor目录中。然后我们可以在方法中通过下面方法将HTMLPurifier.auto.php引入到框架程序中:

vendor('htmlpurifier.library.HTMLPurifier#auto');

不过这里我使用的ThinkPHP 3.2.1,发现这种方法只能使用在函数中,对于控制器类中这样引入是无法正确识别的。也就是说,我们只能在common/function.php文件中引用。

创建HTMLPurifier对象并实现对富文本的过滤

$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify($dirty_html);

如何对HTMLPurifer的过滤器进行配置

要使用HTMLPurifier,重点还是在如何进行配置。对于上面的程序,我们通过createDefault()方法创建了一个默认的配置对象。我们如果要修改配置的话,可以通过set方法来进行配置设置,方法如下:

$config->set('config_object', value, a=null);

第一个参数就是需要配置的属性,第二个参数就是属性的值,第三个参数具体是做什么用的我也还没有搞明白,不过一般都没有用过,等有时间了再慢慢儿来研究研究。

HTMLPurifier的配置属性可以通过其网站查询到

配置属性选择

HTMLPurifier的配置文档主要是两级分类,大类分Attr(属性)、HTML(html标签)、AutoFormat(自动格式)、CSS(css配置)、Output(输出配置)……小类选择通过大类名称加.加小类名称可以完成。

比如我要配置允许的html标签,比如说p标签和a标签,可以如下配置

$config->set('HTML.Allowed', 'p,a');

属性值的选择

在官方文档中,点击一个属性后,可以看到对这个属性的解释,会告诉你这个属性的值的类型(Type)是String、Int、Array、Boolen……

接着还会告诉你这个属性的默认值,比如是NULL还是true还是false等。这个值的格式就跟PHP的格式一样的。

白名单过滤机制

HTMLPurifier使用了白名单过滤机制,只有被设置允许的才会通过检验。

基本过滤事例

a、过滤掉文本中的所有html标签

/**
 * 过滤掉所有html标签很简单,原因则在白名单机制完成
 */
$config->set('HTML.Allowed', '');

b、保留超链接标签a及其href链接地址属性,并自动添加target属性值为’_blank’

$config->set('HTML.Allowed', 'a[href]');
$config->set('HTML.TargetBlank', true);

c、自动完成段落代码并清除掉无用的空标签

// 让文本自动添加段落标签,前提是必须允许P标签的使用
$config->set('HTML.Allowed', 'p');
$config->set('AutoFormat.AutoParagraph', true);
// 清除空标签
$config->set('AutoFormat.RemoveEmpty', true);
……


免责声明

本站所有资源均由网友贡献或各大下载网站转载。请自行检查软件的完整性!本站所有资源仅供学习参考。请不要将它们用于商业目的。否则,一切后果由您负责!如有侵权,请联系我们删除。联系方式:admin@php.cn

相关文章

如何使用 AngularJS 过滤器过滤多个值?如何使用 AngularJS 过滤器过滤多个值?

03Nov2024

使用 AngularJS 过滤器过滤多个值在 AngularJS 中,您可以利用过滤器来细化数据,例如根据...选择电影

使用Muditup 3 JS库进行动画过滤和分类使用Muditup 3 JS库进行动画过滤和分类

17Feb2025

MixItUp 3:基于 CSS 动画的网页元素筛选和排序利器 MixItUp 3 是一个强大的 JavaScript 库,它利用 CSS 动画实现网页元素的筛选和排序,非常适合用于整理内容丰富的网站,例如作品集、相册和博客等。 MixItUp 3 的核心功能: 无依赖性: MixItUp 3 不依赖任何其他库,使用方便。 CSS 动画: 使用 CSS 动画实现流畅的筛选和排序效果。 高度可定制: 提供丰富的配置选项,可以自定义动画效果、添加自定义类名、创建自定义筛选和排序按钮等等。 跨浏览器

EF Core的过滤如何通过过滤相关实体包括优化查询?EF Core的过滤如何通过过滤相关实体包括优化查询?

31Jan2025

过滤包括在EF核心中:授权查询优化在实体框架核心领域中,需要过滤数据,包括...

Vue中过滤器使用及自定义过滤器实现方法Vue中过滤器使用及自定义过滤器实现方法

09Jun2023

Vue是一款流行的JavaScript框架,由于其易学易用和灵活多变,特别受到前端开发人员的青睐。在Vue中,过滤器是一种很常见的功能,可以帮助我们处理一些数据的转换和格式化,从而使数据呈现的更加清晰、美观。本文将介绍Vue中过滤器的使用及自定义过滤器实现方法。一、Vue中过滤器的使用Vue中的过滤器可以用来过滤要显示的数据,它可以通过全局过滤器和局部过滤器

列表理解或 Lambda 过滤器:哪个更适合 Python 列表过滤?列表理解或 Lambda 过滤器:哪个更适合 Python 列表过滤?

22Dec2024

了解列表推导式与 Lambda 过滤器在使用列表并根据项目属性进行过滤时,会出现两种方法:列表...

过滤和链接功能JavaScript过滤和链接功能JavaScript

17Feb2025

JavaScript 的多功能性:面向对象、命令式和函数式编程 JavaScript 的强大之处在于其多功能性,它支持面向对象编程、命令式编程和函数式编程。开发者可以根据项目需求和团队偏好灵活切换编程范式。 ES5 引入了 map、reduce 和 filter 等原生数组方法,极大地方便了函数式编程。其中,filter 方法能够遍历数组中的每个元素,根据指定的测试条件判断是否将其添加到新的数组中。 使用 filter 方法简化代码 filter 方法使代码更简洁清晰。它遍历数组中的每个元素,并

See all articles