浅析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 设计模式之 单例模式
Dec 19 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
ThinkPHP中的常用查询语言汇总
Aug 22 PHP
php下Memcached入门实例解析
Jan 05 PHP
php使用数组填充下拉列表框的方法
Mar 31 PHP
PHP的文件操作与算法实现的面试题示例
Aug 10 PHP
php创建图像具体步骤
Mar 13 PHP
PHP get_html_translation_table()函数用法讲解
Feb 16 PHP
Thinkphp整合阿里云OSS图片上传实例代码
Apr 28 PHP
Thinkphp 框架扩展之应用模式实现方法分析
Apr 27 PHP
PHP代码覆盖率统计详解
Jul 22 PHP
PHP 裁剪图片
Mar 09 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分页示例代码
2007/03/19 PHP
php设计模式 Singleton(单例模式)
2011/06/26 PHP
解析PHP处理换行符的问题 \r\n
2013/06/13 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
表单项的name命名为submit、reset引起的问题
2007/12/22 Javascript
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
jQuery中的通配符选择器使用总结
2016/05/30 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
浅谈jquery中next与siblings的区别
2016/10/27 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
2017/07/15 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
2018/09/02 Javascript
使用javascript做时间倒数读秒功能的实例
2019/01/23 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
[01:10:02]IG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python运行时间的几种方法
2016/06/17 Python
Python使用回溯法子集树模板解决迷宫问题示例
2017/09/01 Python
pycharm下查看python的变量类型和变量内容的方法
2018/06/26 Python
python_opencv用线段画封闭矩形的实例
2018/12/05 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
怎样声明子类
2013/07/02 面试题
公司司机岗位职责范本
2014/03/03 职场文书
设备售后服务承诺书
2014/05/30 职场文书
学雷锋志愿者活动方案
2014/08/21 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
幼儿园感恩节活动总结
2015/03/24 职场文书
反邪教观后感
2015/06/11 职场文书