浅析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 相关文章推荐
基于PHP CURL获取邮箱地址的详解
Jun 03 PHP
PHP CodeBase:将时间显示为&quot;刚刚&quot;&quot;n分钟/小时前&quot;的方法详解
Jun 06 PHP
关于svn冲突的解决方法
Jun 21 PHP
php 根据url自动生成缩略图并处理高并发问题
Jan 23 PHP
javascript+php实现根据用户时区显示当地时间的方法
Mar 11 PHP
CodeIgniter配置之config.php用法实例分析
Jan 19 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
Yii2框架类自动加载机制实例分析
May 02 PHP
PHP获取MySQL执行sql语句的查询时间方法
Aug 21 PHP
PHP抽象类与接口的区别详解
Mar 21 PHP
Laravel中正确地返回HTTP状态码方法示例
Sep 10 PHP
php获取小程序码的实现代码(B类接口)
Jun 13 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实现图片简单上传
2006/10/09 PHP
php轻松实现中英文混排字符串截取
2014/05/28 PHP
盘点PHP和ASP.NET的10大对比!
2015/12/24 PHP
ThinkPHP中limit()使用方法详解
2016/04/19 PHP
Javascript 面向对象(三)接口代码
2012/05/23 Javascript
jQuery中:file选择器用法实例
2015/01/04 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
基于jQuery实现美观且实用的倒计时实例代码
2015/12/30 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
2017/06/13 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
2017/09/20 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
2018/09/14 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去
2019/07/23 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
2019/09/30 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
javascript实现打砖块小游戏(附完整源码)
2020/09/18 Javascript
轻量级的Web框架Flask 中模块化应用的实现
2017/09/11 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
python pandas dataframe 按列或者按行合并的方法
2018/04/12 Python
Python格式化输出%s和%d
2018/05/07 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
Python读取yaml文件的详细教程
2020/07/21 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
银行实习自我鉴定
2013/10/12 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
新员工辞职信范文
2015/05/12 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
小学校园广播稿
2015/08/18 职场文书
幼儿园小班开学寄语(2016秋季)
2015/12/03 职场文书
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python