浅析php插件 HTMLPurifier HTML解析器

yipeiwu_com5年前PHP代码库
HTMLPurifier插件的使用
下载HTMLPurifier插件
HTMLPurifier插件有用的部分是 library


使用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人民币金额数字转中文大写的函数代码

在网上看到一个非常有趣的PHP人民币金额数字转中文大写的函数,其实质就是数字转换成中文大写,测试了一下,非常有趣,随便输个数字,就可以将其大写打印出来,新手朋友们试一下吧,举一反三,还可...

PHP连接操作access数据库实例

因为之前做的PingSwitch要做一个WEB展示的前端,因为一开始用了Delphi和access的结构,而Delphi与MySQL的连接又相对麻烦,最后只能选择用PHP+Access的...

ajax缓存问题解决途径

我用PHP和Ajax结合,添加数据之后,刷新前台页面,数据没有变化。我改动PHP动态脚本,只有重新找开IE再输入地址,才能看到效果。以上这些是不是缓存的原因啊?怎么解决? ajax缓存问...

PHP中HTTP方式下的Gzip压缩传输方法举偶

Gzip压缩传输能更加有效节约带宽流量。他先把文本压缩为.gz然后传输给浏览器,最后由浏览器负责解压缩呈现给用户。 老版本的浏览器可能不能显示,但是现在大多数浏览器都能显示。 启用Gzi...

学习php设计模式 php实现装饰器模式(decorator)

学习php设计模式 php实现装饰器模式(decorator)

动态的给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活【GOF95】 装饰模式是以对客户透明的方式动态地给一个对象附加上更多的职责。这也就是说,客...