最新下载
梦幻水族馆
少女前线
星之翼
小花仙精灵乐园
餐厅萌物语
山河旅探
恋与制作人
最强大脑3
异尘:达米拉
少年西游记2
24小时阅读排行榜
- 1 爱德华·斯诺登 (Edward Snowden) 的 Solana 言论激发 JetBolt 崛起为新的山寨币竞争者
- 2 JavaScript 中对象的浅拷贝与深拷贝
- 3 Astrobuild 教程和联系表
- 4 What is In-App Messaging?
- 5 10 亿美元比特币期权到期可能会撼动加密货币市场
- 6 活动策划师
- 7 Solana (SOL)、Toncoin (TON) 和 Rollblock (RBLK):哪些加密货币将在第四季度表现最亮眼?
- 8 RCO Finance (RCOF):人工智能驱动的山寨币将复制 XRP 的惊人收益
- 9 Bitgert 的 $BRISE 币、Shiba 币和 Worldcoin 哪一个会脱颖而出?
- 10 “掌握 JavaScript 提升:每个开发人员都必须知道的棘手输出问题!”第 1 部分
- 11 拥有最多比特币的 10 个实体
- 12 Web 开发的未来:Astro 和 Solid Start 如何重新定义 4 中的性能和灵活性
- 13 随着质押奖励和主网启动预期提振山寨币,Mantra (OM) 触及 2 个月高点 1.3155 美元
- 14 Java后端管理项目
- 15 从开发人员到高级工程师的旅程:不仅仅是代码
最新教程
-
- 国外Web开发全栈课程全集
- 1475 2024-04-24
-
- Go语言实战之 GraphQL
- 1751 2024-04-19
-
- 550W粉丝大佬手把手从零学JavaScript
- 3179 2024-04-18
-
- python大神Mosh,零基础小白6小时完全入门
- 2702 2024-04-10
-
- MySQL 初学入门(mosh老师)
- 1620 2024-04-07
-
- Mock.js | Axios.js | Json | Ajax--十天精品课堂
- 2459 2024-03-29
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); ……