php网页解析器,浅析php插件 HTMLPurifier HTML解析器
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解析器相关推荐
- 搬砖之路----MusicPlayer 一个基于Vlc(2.0+)开发的android音乐播放器--浅析在android开发过程中播放器选择之路!
前言 MusicPlayer 是一款基于vlc播放器开发的一个音乐播放器,你也可以理解为在此核心上的搬砖之路,核心的内容并不是我写的,因此在正式写blog之前,感谢那些vlc核心的开发人员让我用到这么 ...
- 【谷歌推网页爬虫新标准,开源robots.txt解析器】
https://www.toutiao.com/a1638031116246019 [谷歌推网页爬虫新标准,开源robots.txt解析器] 对于接触过网络爬虫的人来说 robots.txt 绝不陌生 ...
- wireshark协议解析器原理与插件编写
工作原理 每个解析器解码自己的协议部分, 然后把封装协议的解码传递给后续协议. 因此它可能总是从一个Frame解析器开始, Frame解析器解析捕获文件自己的数据包细节(如:时间戳), 将数据交给一个 ...
- MySQL内核源码解读-SQL解析之解析器浅析
MYSQL服务器接收SQL格式的查询,首先要对sql进行解析,内部将文本格式转换为二进制结构,这个转换就是解析器,解析的目的是为了让优化器更好的处理指令,以便以最优的路径,最少的耗时返回我们想要的结果 ...
- docker下,一行命令搭建elasticsearch6.5.0集群(带head插件和ik分词器)
docker下,一行命令搭建elasticsearch6.5.0集群(带head插件和ik分词器) 2019年01月27日 21:06:12 博陵精骑 阅读数:794 标签: dockerelasti ...
- Android 插件化原理解析——插件加载机制
上文 Activity生命周期管理 中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务:通过Hook AMS和拦截ActivityThread中H类对 ...
- Android插件基础之类加载器学习
记录学习java 加载器学习所获心得,逐步记录了解java加载器的过程.为了知悉android 插件化的实现原理,从而需要从头了解android加载apk,以及基础的java类加载的加载过程情况,为方 ...
- mybatis plugins_[Mybatis]-[基础支持层]-插件-plugin标签解析
该系列文章针对 Mybatis 3.5.1 版本 一.Mybatis 插件的作用 Mybatis 针对 SQL 映射语句执行过程中进行拦截处理,而对应的拦截器 Mybaits 又称之为 插件(这些插件 ...
- android 自动翻页插件,网页自动翻页Chrome插件下载
AutoPagerize是一款在谷歌浏览器上运行的网页自动翻页chrome插件,AutoPagerize插件可以让你通过鼠标滚轮翻页.当你的鼠标滚轮滚动到页面底部时,再向下就会发现下一页的内容.操作简 ...
最新文章
- 嵌入式Linux设备驱动程序:用户空间中的设备驱动程序
- JVM 年轻代(Eden、From、To)、老年代讲解
- oracle 提示i386,新手请教:RAC安装时检测i386软件包未安装,这个怎么处理?
- 大话设计模式之策略模式
- LDA-Latent Dirichlet Allocation 学习笔记
- Asp.net五大对象
- Nginx——安装详解
- 5e的训练模式全是英文_四块GPU即可训练BigGAN:「官方版」PyTorch实现出炉
- linux SSH rsa认证方式登录需理清的问题
- 我的Android进阶之旅------Android ListView优化详解
- 【牛腩】FreeTextBox
- c语言第三章重点知识点总结,c语言重点知识点总结
- CentOS之命令方式安装向日葵与内网穿透
- Python爬虫实现突破百度文库限制
- python二手房数据分析_使用python抓取分析链家网二手房数据
- 百度搜索升级冰桶算法5.0
- 企业如何进行数字化管理?
- Atmel ATSAMV70Q20 的 CAN 扩展帧收发设置
- 【数据结构与算法】之深入解析“滑动谜题”的求解思路与算法示例
- 【NA】函数最佳逼近(二)勒让德多项式
热门文章
- 2020春招 / 2021秋招阿里、腾讯、字节、快手、美团 JAVA 开发岗面试高频问题总结
- 1024程序员节,以梦为马,不负韶华,我们来聊聊IT的发展以及个人感受吧!
- 什么是上位机、下位机
- PrimoCache2.2.0汉化程序与2.0.0的交叉使用
- [Android自定义控件]自定义属性attrs.xml中format
- vue与webpack
- 为什么计算机会出现两个用户,Win7登录时有2个账户|为什么电脑开机时有二个账户...
- CF1637E Best Pair
- Dapp 众筹项目1 合约代码编写
- 装修小知识 杜绝厨房装修遗憾