浅析php插件 HTMLPurifier HTML解析器

浅析php插件 HTMLPurifier HTML解析器

本篇文章是对php插件 HTMLPurifier HTML解析器进行了详细的分析介绍,需要的朋友参考下

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);