浅析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 相关文章推荐
Dedecms常用函数解析
Feb 01 PHP
PHPMYADMIN导入数据最大为2M的解决方法
Apr 23 PHP
PHP5常用函数列表(分享)
Jun 07 PHP
PHP中4个加速、缓存扩展的区别和选用建议
Mar 12 PHP
php两种无限分类方法实例
Apr 21 PHP
php猴子选大王问题解决方法
May 12 PHP
php数组随机排序实现方法
Jun 13 PHP
PHP如何实现跨域
May 30 PHP
浅谈PHP Cookie处理函数
Jun 10 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
Dec 29 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
PHP与Web页面交互操作实例分析
Jun 02 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 和 XML: 使用expat函数(二)
2006/10/09 PHP
ie6 动态缩略图不显示的原因
2009/06/21 PHP
php 数据库字段复用的基本原理与示例
2011/07/22 PHP
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
2014/08/21 PHP
详解PHP的Yii框架的运行机制及其路由功能
2016/03/17 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
ThinkPHP5 的简单搭建和使用详解
2018/11/15 PHP
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
2013/01/24 Javascript
jquery 卷帘效果实现代码(不同方向)
2013/02/05 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
使用JavaScript实现弹出层效果的简单实例
2016/05/31 Javascript
jquery 禁止鼠标右键并监听右键事件
2017/04/27 jQuery
nodejs集成sqlite使用示例
2017/06/05 NodeJs
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
Python实现把utf-8格式的文件转换成gbk格式的文件
2015/01/22 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
Python figure参数及subplot子图绘制代码
2020/04/18 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
HTML5学习笔记之History API
2015/02/26 HTML / CSS
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
2014/09/09 面试题
什么是GWT的Module
2013/01/20 面试题
为什么说Ruby是一种真正的面向对象程序设计语言
2012/10/30 面试题
信息专业大学生自我评价分享
2014/01/17 职场文书
教学器材管理制度
2014/01/26 职场文书
2014村务公开实施方案
2014/02/25 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
django如何自定义manage.py管理命令
2021/04/27 Python
如何理解Vue简单状态管理之store模式
2021/05/15 Vue.js
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android