HTMLPurifier插件的使用

下载HTMLPurifier插件

HTMLPurifier插件有用的部分是 library

使用HTMLPurifier library类库

第一种方式

require_once 'HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();

?>

或者

require_once 'HTMLPurifier.includes.php';

require_once 'HTMLPurifier.autoload.php';

$config = HTMLPurifier_Config::createDefault();

?>

官网给出的例子是

require_once 'HTMLPurifier.auto.php';

我同事常用的是

require_once 'HTMLPurifier.includes.php';

require_once 'HTMLPurifier.autoload.php';

设置$configconfigdoc

http://htmlpurifier.org/live/configdoc/plain.html例子

$config->set('HTML.AllowedElements', array('div'=>true, 'table'=>true, 'tr'=>true, 'td'=>true, 'br'=>true));

$config->set('HTML.Doctype', 'XHTML 1.0 Transitional')  //html文档类型(常设)

$config->set('Core.Encoding', 'UTF-8')   //字符编码(常设)

HTML允许的元素div元素,table元素,tr元素,td元素,br元素

new HTMLPurifier对象

$purifier = new HTMLPurifier($config);

调用HTMLPurifier对象的purify方法

$puri_html = $purifier->purify($html);

第二种方式自定义一个类 HtmlPurifier.php

require_once 'HTMLPurifier.includes.php';

require_once 'HTMLPurifier.autoload.php';

class Resume_HtmlPurifier implements Zend_Filter_Interface{

protected $_htmlPurifier = null;

public function __construct($options = null)

{

$config = HTMLPurifier_Config::createDefault();

$config->set('Code.Encoding', 'UTF-8');

$config->set('HTML.Doctype', 'XHTML 1.0 Transitional')

if(!is_null($options)){

foreach($options as $option){

$config->set($option[0], $option[1], $option[2]);

}

}

$this->_htmlPurifier = new HTMLPurifier($config);

}

public function filter($value)

{

return $this->_htmlPurifier->purify($value);

}

}

?>

设置config信息

例如:

$conf = array(

array('HTML.AllowedElements',

array(

'div' => true,

'table' => true,

'tr' => true,

'td' => true,

'br' => true,

),

false), //允许属性 div table tr td br元素

array('HTML.AllowedAttributes', array('class' => TRUE), false),  //允许属性 class

array('Attr.ForbiddenClasses', array('resume_p' => TRUE), false), //禁止classes如

array('AutoFormat.RemoveEmpty', true, false),    //去空格

array('AutoFormat.RemoveEmpty.RemoveNbsp', true, false),  //去nbsp

array('URI.Disable', true, false),

);

调用

$p = new Resume_HtmlPurifier($conf);

$puri_html = $p->filter($html);

php网页解析器,浅析php插件 HTMLPurifier HTML解析器相关推荐

  1. 搬砖之路----MusicPlayer 一个基于Vlc(2.0+)开发的android音乐播放器--浅析在android开发过程中播放器选择之路!

    前言 MusicPlayer 是一款基于vlc播放器开发的一个音乐播放器,你也可以理解为在此核心上的搬砖之路,核心的内容并不是我写的,因此在正式写blog之前,感谢那些vlc核心的开发人员让我用到这么 ...

  2. 【谷歌推网页爬虫新标准,开源robots.txt解析器】

    https://www.toutiao.com/a1638031116246019 [谷歌推网页爬虫新标准,开源robots.txt解析器] 对于接触过网络爬虫的人来说 robots.txt 绝不陌生 ...

  3. wireshark协议解析器原理与插件编写

    工作原理 每个解析器解码自己的协议部分, 然后把封装协议的解码传递给后续协议. 因此它可能总是从一个Frame解析器开始, Frame解析器解析捕获文件自己的数据包细节(如:时间戳), 将数据交给一个 ...

  4. MySQL内核源码解读-SQL解析之解析器浅析

    MYSQL服务器接收SQL格式的查询,首先要对sql进行解析,内部将文本格式转换为二进制结构,这个转换就是解析器,解析的目的是为了让优化器更好的处理指令,以便以最优的路径,最少的耗时返回我们想要的结果 ...

  5. docker下,一行命令搭建elasticsearch6.5.0集群(带head插件和ik分词器)

    docker下,一行命令搭建elasticsearch6.5.0集群(带head插件和ik分词器) 2019年01月27日 21:06:12 博陵精骑 阅读数:794 标签: dockerelasti ...

  6. Android 插件化原理解析——插件加载机制

    上文 Activity生命周期管理 中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务:通过Hook AMS和拦截ActivityThread中H类对 ...

  7. Android插件基础之类加载器学习

    记录学习java 加载器学习所获心得,逐步记录了解java加载器的过程.为了知悉android 插件化的实现原理,从而需要从头了解android加载apk,以及基础的java类加载的加载过程情况,为方 ...

  8. mybatis plugins_[Mybatis]-[基础支持层]-插件-plugin标签解析

    该系列文章针对 Mybatis 3.5.1 版本 一.Mybatis 插件的作用 Mybatis 针对 SQL 映射语句执行过程中进行拦截处理,而对应的拦截器 Mybaits 又称之为 插件(这些插件 ...

  9. android 自动翻页插件,网页自动翻页Chrome插件下载

    AutoPagerize是一款在谷歌浏览器上运行的网页自动翻页chrome插件,AutoPagerize插件可以让你通过鼠标滚轮翻页.当你的鼠标滚轮滚动到页面底部时,再向下就会发现下一页的内容.操作简 ...

最新文章

  1. 嵌入式Linux设备驱动程序:用户空间中的设备驱动程序
  2. JVM 年轻代(Eden、From、To)、老年代讲解
  3. oracle 提示i386,新手请教:RAC安装时检测i386软件包未安装,这个怎么处理?
  4. 大话设计模式之策略模式
  5. LDA-Latent Dirichlet Allocation 学习笔记
  6. Asp.net五大对象
  7. Nginx——安装详解
  8. 5e的训练模式全是英文_四块GPU即可训练BigGAN:「官方版」PyTorch实现出炉
  9. linux SSH rsa认证方式登录需理清的问题
  10. 我的Android进阶之旅------Android ListView优化详解
  11. 【牛腩】FreeTextBox
  12. c语言第三章重点知识点总结,c语言重点知识点总结
  13. CentOS之命令方式安装向日葵与内网穿透
  14. Python爬虫实现突破百度文库限制
  15. python二手房数据分析_使用python抓取分析链家网二手房数据
  16. 百度搜索升级冰桶算法5.0
  17. 企业如何进行数字化管理?
  18. Atmel ATSAMV70Q20 的 CAN 扩展帧收发设置
  19. 【数据结构与算法】之深入解析“滑动谜题”的求解思路与算法示例
  20. 【NA】函数最佳逼近(二)勒让德多项式

热门文章

  1. 2020春招 / 2021秋招阿里、腾讯、字节、快手、美团 JAVA 开发岗面试高频问题总结
  2. 1024程序员节,以梦为马,不负韶华,我们来聊聊IT的发展以及个人感受吧!
  3. 什么是上位机、下位机
  4. PrimoCache2.2.0汉化程序与2.0.0的交叉使用
  5. [Android自定义控件]自定义属性attrs.xml中format
  6. vue与webpack
  7. 为什么计算机会出现两个用户,Win7登录时有2个账户|为什么电脑开机时有二个账户...
  8. CF1637E Best Pair
  9. Dapp 众筹项目1 合约代码编写
  10. 装修小知识 杜绝厨房装修遗憾