浅析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 4.2书写安全的脚本
Oct 09 PHP
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
Dec 06 PHP
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
May 25 PHP
PHP可逆加密/解密函数分享
Sep 25 PHP
PHP不用第三变量交换2个变量的值的解决方法
Jun 02 PHP
PHP中spl_autoload_register函数的用法总结
Nov 07 PHP
调试PHP程序的多种方法介绍
Nov 06 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
Sep 14 PHP
PHP检测数据类型的几种方法(总结)
Mar 04 PHP
PHP中file_put_contents追加和换行的实现方法
Apr 01 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
Nov 24 PHP
php 命名空间(namespace)原理与用法实例小结
Nov 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用户指南-cookies部分
2006/10/09 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
2006/12/06 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
php实现基于PDO的预处理示例
2017/03/28 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
打造基于jQuery的高性能TreeView(asp.net)
2011/02/23 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
浅谈JavaScript 的执行顺序
2015/08/07 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
学习JavaScript事件流和事件处理程序
2016/01/25 Javascript
DropDownList实现可输入可选择(两种版本可选)
2016/12/07 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
2017/03/02 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
2017/03/14 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
Vue keep-alive实践总结(推荐)
2017/08/31 Javascript
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
基于Vue实现拖拽效果
2018/04/27 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
Nodejs 识别图片类型的方法
2019/08/15 NodeJs
p5.js临摹旋转爱心
2019/10/23 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
vue如何使用rem适配
2021/02/06 Vue.js
[01:34]2014DOTA2 TI预选赛预选赛 选手比赛房大揭秘!
2014/05/20 DOTA
[16:14]教你分分钟做大人:米拉娜(HEROS)
2014/11/24 DOTA
python使用电子邮件模块smtplib的方法
2016/08/28 Python
Python优先队列实现方法示例
2017/09/21 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
2015年房地产个人工作总结
2015/05/26 职场文书
教师旷工检讨书
2015/08/15 职场文书
python保存图片的四个常用方法
2022/02/28 Python