php网页解析器,浅析php插件 HTMLPurifier HTML解析器

本文介绍了如何使用HTMLPurifier插件来过滤和净化HTML内容,确保只允许特定元素和属性存在,从而防止XSS攻击。通过require_once引入相关文件并配置允许的元素和属性,创建HTMLPurifier对象并使用其purify方法进行净化。此外,还提供了一个自定义类Resume_HtmlPurifier,实现了Zend_Filter_Interface,方便在项目中集成和管理。
摘要由CSDN通过智能技术生成

HTMLPurifier插件的使用

下载HTMLPurifier插件

HTMLPurifier插件有用的部分是 library

ecb14ef1a16f71a6a2e2c8f4d0ed26ea.png

使用HTMLPurifier library类库

第一种方式

require_once 'HTMLPurifier.auto.php';

$config = HTMLPurifier_Config::createDefault();

?>

或者

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

设置$configconfigdoc

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值