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
相关文章
01 Aug 2023
PHP数据过滤:防止未授权访问数据库简介:在网站开发中,数据库是常用的数据存储和管理工具。然而,未经授权的访问数据库可能会导致数据泄露和安全漏洞。因此,对用户输入的数据进行必要的过滤和验证是非常重要的。本文将介绍如何使用PHP来过滤用户输入,以防止未经授权访问数据库。输入验证在接收用户输入之前,应该对其进行验证,以确保输入的数据符合预期的格式和内容。过滤用户
02 Mar 2024
对于Go语言开发者来说,选择合适的类库是至关重要的。优秀的类库可以极大地提高开发效率,同时避免重复造轮子。在Go语言世界里,有许多优秀的类库供我们选择,但也有一些“必备”类库,今天我将为大家介绍一些在实际项目中我认为不容错过的重要类库,并提供具体的代码示例供大家参考。GorillaMux无论是构建RESTfulAPI还是Web应用,路由是不可或缺的部分。
29 Aug 2023
通过满足指定谓词的流中的项目组成的流将由流过滤函数返回。这是一个中间级操作。这些操作总是懒惰的,即运行过滤函数或其他中间操作实际上并不过滤任何内容;相反,它生成一个新的流,当遍历时,包括满足提供的谓词的初始流的项目。语法Stream<T>filter(Predicate<?superT>predicate)当T是谓词输入的类型,并且stream是一个接口。返回类型Anewstream.实施Eliminatingitemsthatmaybed
28 Jul 2023
PHP数据过滤:从用户输入到数据库安全概述:在Web开发中,用户输入数据的安全性是一个非常重要的问题。不正确的输入过滤和验证可能导致数据库遭受攻击,例如SQL注入、跨站点脚本攻击(XSS)等。本文将介绍如何使用PHP进行数据过滤和验证,以确保数据从用户输入到存储在数据库中的过程中的安全性。输入过滤用户输入的数据是不可信的,因此必须对其进行适当的过滤。以下是一
11 Jul 2023
PHP和GD库教程:如何给图片添加滤镜效果导语:在Web开发中,经常需要对图片进行处理和优化。PHP作为一种流行的服务器端脚本语言,可以通过GD库来处理图片。本教程将介绍如何利用PHP和GD库为图片添加滤镜效果。GD库简介:GD库是一个用于动态创建和处理图像的开源库。它可以创建各种类型的图像,包括JPEG、PNG和GIF,还可以进行复杂的图像处理操作,如改变
15 Jun 2018
thinkphp连接多数据库 配置文件中:return array( //数据库配置信息 默认连接这一个 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => '127.0.0.1', // 服务器地址 'DB_NAME' => 'test1', // 数据库名 'DB_USER' => 'root', // 用户名