浅析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 动态添加记录
Mar 10 PHP
PHP设计模式 注册表模式
Feb 05 PHP
解析php中反射的应用
Jun 18 PHP
CodeIgniter框架中_remap()使用方法2例
Mar 10 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
Sep 27 PHP
php实现修改新闻时删除图片的方法
May 12 PHP
thinkPHP3.1验证码的简单实现方法
Apr 22 PHP
浅谈PHP的反射机制
Dec 15 PHP
PHP长网址与短网址的实现方法
Oct 13 PHP
关于ThinkPHP中的异常处理详解
May 11 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
Apr 16 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
Nov 22 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 文件上传系统手记
2009/10/26 PHP
php中实现记住密码自动登录的代码
2011/03/02 PHP
php二维数组合并及去重复的方法
2015/03/04 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
PHP 加密 Password Hashing API基础知识点
2020/03/02 PHP
javascript 关闭IE6、IE7
2009/06/01 Javascript
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
js对文章内容进行分页示例代码
2014/03/05 Javascript
浅谈javascript中replace()方法
2015/11/10 Javascript
Angular.JS学习之依赖注入$injector详析
2016/10/20 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
深入理解ES7的async/await的用法
2017/09/09 Javascript
vue cli使用绝对路径引用图片问题的解决
2017/12/06 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
JS严格模式原理与用法实例分析
2020/04/27 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
如何区分vue中的v-show 与 v-if
2020/09/08 Javascript
[11:44]Ti9 OG夺冠时刻
2019/08/25 DOTA
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
Python 使用类写装饰器的小技巧
2018/09/30 Python
Django使用中间键实现csrf认证详解
2019/07/22 Python
python 协程 gevent原理与用法分析
2019/11/22 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
C#怎么让一个窗口居中显示?
2015/10/20 面试题
中学生学习生活的自我评价
2013/10/26 职场文书
中文专业毕业生自荐信
2013/10/28 职场文书
超市中秋节促销方案
2014/03/21 职场文书
正风肃纪剖析材料范文
2014/10/10 职场文书
会计岗位职责范本
2015/04/02 职场文书
2019年度开业庆典祝福语大全!
2019/07/05 职场文书
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL
Go Plugins插件的实现方式
2021/08/07 Golang