浅析php插件 HTMLPurifier HTML解析器


Posted in PHP onJuly 01, 2013

HTMLPurifier插件的使用
下载HTMLPurifier插件
HTMLPurifier插件有用的部分是 library

浅析php插件 HTMLPurifier HTML解析器
使用HTMLPurifier library类库
第一种方式

<?php
require_once 'HTMLPurifier.auto.php';
$config = HTMLPurifier_Config::createDefault();
?>

或者
<?php 
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';

设置$config
configdoc
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
<?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 相关文章推荐
构建简单的Webmail系统
Oct 09 PHP
PHP 第三节 变量介绍
Apr 28 PHP
Ajax+PHP快速上手及简单应用说明
Jul 24 PHP
php 批量替换html标签的实例代码
Nov 26 PHP
yii框架通过控制台命令创建定时任务示例
Apr 30 PHP
PHP远程采集图片详细教程
Jul 01 PHP
phpnow php探针环境检测代码
Nov 04 PHP
你应该知道PHP浮点数知识
May 13 PHP
ajax+php控制所有后台函数调用
Jul 15 PHP
php pthreads多线程的安装与使用
Jan 19 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
Aug 15 PHP
php字符串过滤strip_tags()函数用法实例分析
Jun 24 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
Jul 01 #PHP
php curl选项列表(超详细)
Jul 01 #PHP
基于simple_html_dom的使用小结
Jul 01 #PHP
解析php php_openssl.dll的作用
Jul 01 #PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
Jul 01 #PHP
浅析PKI加密解密 OpenSSL
Jul 01 #PHP
php pki加密技术(openssl)详解
Jul 01 #PHP
You might like
PHP-redis中文文档介绍
2013/02/07 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
2018/05/21 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
基于jquery的弹出提示框始终处于窗口的居中位置(类似于alert弹出框的效果)
2011/09/28 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
jQuery的deferred对象详解
2014/11/12 Javascript
javascript实现依次输入input自动定焦
2014/12/23 Javascript
jQuery菜单插件superfish使用指南
2015/04/21 Javascript
jquery操作select元素和option的实例代码
2016/02/03 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
详解vue的数据binding绑定原理
2017/04/12 Javascript
javascript ES6 新增了let命令使用介绍
2017/07/07 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
js计时事件实现圆形时钟
2020/03/25 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
python的keyword模块用法实例分析
2015/06/30 Python
Python利用matplotlib生成图片背景及图例透明的效果
2017/04/27 Python
python并发2之使用asyncio处理并发
2017/12/21 Python
python版学生管理系统
2018/01/10 Python
python实现对文件中图片生成带标签的txt文件方法
2018/04/27 Python
Python学习笔记之字符串和字符串方法实例详解
2019/08/22 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
python 如何上传包到pypi
2020/12/24 Python
欧洲最古老的鞋厂:Peter Kaiser
2019/11/05 全球购物
机械绘图员岗位职责
2013/11/19 职场文书
大学运动会通讯稿
2014/01/28 职场文书
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
大学三年计划书范文
2014/04/30 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
2015年禁毒宣传活动总结
2015/03/25 职场文书
2019事业单位个人工作总结范文
2019/08/26 职场文书
Go语言 详解net的tcp服务
2022/04/14 Golang