浅析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初学者写及时补给skype用户充话费的小程序
Nov 02 PHP
隐性调用php程序的方法
Mar 09 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
Jun 03 PHP
基于PHP文件操作的详解
Jun 05 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
Jun 24 PHP
PHP对接微信公众平台消息接口开发流程教程
Mar 25 PHP
php+highchats生成动态统计图
May 21 PHP
推荐5款跨平台的PHP编辑器
Dec 25 PHP
Symfony的安装和配置方法
Mar 17 PHP
PHP设计模式之工厂方法设计模式实例分析
Apr 25 PHP
解决Laravel blade模板转义html标签的问题
Sep 03 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
Oct 21 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文件中是否含有bom的函数
2012/05/31 PHP
CI框架中site_url()和base_url()的区别
2015/01/07 PHP
php接口数据加密、解密、验证签名
2015/03/12 PHP
AES加解密在php接口请求过程中的应用示例
2016/10/26 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
2017/08/18 PHP
php集成开发环境详解
2019/09/24 PHP
基于jquery的多功能软键盘插件
2012/07/25 Javascript
js禁止document element对象选中文本实现代码
2013/03/21 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
JavaScript实现网页截图功能
2014/10/16 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
解决前端跨域问题方案汇总
2016/11/20 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
2019/05/07 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
微信小程序实现首页弹出广告
2020/12/03 Javascript
原生JS实现拖拽效果
2020/12/04 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
pandas如何处理缺失值
2019/07/31 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
pygame实现俄罗斯方块游戏(基础篇1)
2019/10/29 Python
python 8种必备的gui库
2020/08/27 Python
scrapy处理python爬虫调度详解
2020/11/23 Python
python如何实现递归转非递归
2021/02/25 Python
印度尼西亚综合购物网站:Lazada印尼
2016/09/07 全球购物
纽约手袋品牌:KARA
2018/03/18 全球购物
舒适的豪华鞋:Taryn Rose
2018/05/03 全球购物
广告学专业毕业生自荐信
2013/09/24 职场文书
高中军训感言800字
2014/03/05 职场文书
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android
浅谈TypeScript 索引签名的理解
2021/10/16 Javascript