浅析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 相关文章推荐
一次编写,随处运行
Oct 09 PHP
PHP extract 将数组拆分成多个变量的函数
Jun 30 PHP
zend framework多模块多布局配置
Feb 26 PHP
php数组函数序列之in_array() 查找数组值是否存在
Oct 29 PHP
PHP文章采集URL补全函数(FormatUrl)
Aug 02 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
Sep 07 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
Jul 01 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
Feb 17 PHP
php封装的mongodb操作类代码
Aug 06 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
Sep 28 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
Aug 03 PHP
php7 参数、整形及字符串处理机制修改实例分析
May 25 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
php5新改动之短标记启用方法
2008/09/11 PHP
php 面向对象的一个例子
2011/04/12 PHP
PHP无限分类(树形类)的深入分析
2013/06/02 PHP
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
php验证码生成代码
2015/11/11 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
PHP中number_format()函数的用法讲解
2019/04/08 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
JQuery实现鼠标移动图片显示描述层的方法
2015/06/25 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
2017/05/24 Javascript
微信小程序动态显示项目倒计时效果
2017/06/13 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
angular6 填坑之sdk的方法
2018/12/27 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
2019/08/05 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
Python爬取成语接龙类网站
2018/10/19 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
详解python中init方法和随机数方法
2019/03/13 Python
Python+opencv+pyaudio实现带声音屏幕录制
2019/12/23 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
解决margin 外边距合并问题
2019/07/03 HTML / CSS
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
家长通知书教师评语
2014/04/17 职场文书
高中生评语大全
2014/04/25 职场文书
我心目中的好老师活动方案
2014/08/19 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
就业协议书
2014/09/12 职场文书
品德与社会教学反思
2016/02/24 职场文书
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python