php的libxml函数
来源:互联网 发布:淘宝未发货前退款 编辑:程序博客网 时间:2024/05/16 05:52
打算给初学者分享下微信,从头看微信文档,解析xml时,出现了一个函数:libxml_disable_entity_loader(),没见过。。。
就决定简单的了解下,可查看我转载的文章:
XML注入攻击
接着,看到libxml函数就几个,顺带简单的看看,就翻译了下(也不知道最近咋了,喜欢用我这很垃圾的英文翻译。。。):
libxml函数库:
1.简介:
PHP5.1.0开始,使用这些函数及常量,“函数参考>xml”下的这些核心扩展都依赖libxml扩展:DOM,libxml,SimpleXML,SOAP,WDDX,XSL,XML,XMLReader,XMLRPC和XMLWriter
2.预定义常量不少,不解释
3.libXMLError,是一个class,libxml可能抛出各种错误,api也查看官方文档,看来php只是简单给封装了下。
4.libxml函数
libxml_clear_errors() - 清空libxml的错误缓冲区
libxml_get_errors() - 从libxml错误缓冲区中获取错误数组(数组每个元素都是一个libXMLError错误对象)
如果libxml的错误缓冲区有任何错误,该函数返回以libXMLError错误对象为元素的一个数组,否则返回一个空数组。
libxml_get_last_error() - 返回libxml最后的错误
如果libxml的错误缓冲区有任何错误,返回最后的一个libXMLError错误对象,否则返回false
libxml_use_internal_errors([bool $use_errors = false]) - 禁用libxml错误,允许用户获取需要的错误信息
- 禁用标准的libxml错误,启用用户错误处理
- 设置为true - 启用用户错误处理
- 设置为false - 禁用用户错误处理
- 禁用用户错误处理,也会清空所有现存的libxml的错误
- 返回$use_errors之前的设定值
libxml_disable_entity_loader([bool $disable = true]) - 禁止加载外部实体
禁用/启用记载外部实体返回$disable之前的设定值
libxml_set_external_entity_loader(callable $resolver_function) - 改变默认的外部实体加载器
callable - 3个参数的回调函数。二个字符串(一个public id和一个system id),以及一个context作为第3个参数(一个有4个元素的数组)。回调函数应该返回一个资源(从打开的资源中得到一个字符串)或者null。
手册上的实例:
<?php$xml = <<<XML<!DOCTYPE foo PUBLIC "-//FOO/BAR" "http://example.com/foobar"><foo>bar</foo>XML;$dtd = <<<DTD<!ELEMENT foo (#PCDATA)>DTD;libxml_set_external_entity_loader( function ($public, $system, $context) use($dtd) { var_dump($public); var_dump($system); var_dump($context); $f = fopen("php://temp", "r+"); fwrite($f, $dtd); rewind($f); return $f; });$dd = new DOMDocument;$r = $dd->loadXML($xml);var_dump($dd->validate());?>输出:string(10) "-//FOO/BAR"string(25) "http://example.com/foobar"array(4) { ["directory"] => NULL ["intSubName"] => NULL ["extSubURI"] => NULL ["extSubSystem"] => NULL}bool(true)
libxml_set_streams_context(resource $streams_context) - 为下一个 libxml 文档的加载或写入,设置流环境
streams_context - 流环境资源(通过 stream_context_create() 创建)
手册上的实例:
<?php$opts = array( 'http' => array( 'user_agent' => 'PHP libxml agent', ));$context = stream_context_create($opts);libxml_set_streams_context($context);// request a file through HTTP$doc = DOMDocument::load('http://www.example.com/file.xml');?>
- php的libxml函数
- PHP Libxml 函数
- libxml主要函数说明
- libxml主要函数说明
- libxml主要函数说明
- libxml主要函数说明
- libxml主要函数说明
- libxml编程--函数总结
- libxml主要函数说明
- libxml主要函数说明
- libxml的安装
- libxml的安装
- libxml教程常用函数详解
- libxml主要函数说明 (一)
- libxml主要函数说明 (二)
- libxml
- libxml
- libxml
- 04-树4 是否同一棵二叉搜索树
- 数据库View配合Dao层框架解决表1:1和1:n时的关联查询SQL生成问题
- DB2 IMPORT 数据报错 SQL3114W
- FindBugs检测器实现(1)
- Java环境变量配置
- php的libxml函数
- GC 算法,永久代对象如何 GC , GC 有环怎么处理
- C++多线程同步之Semaphore(信号量)
- c:url标签构造地址
- Java 内部类、成员类、局部类、匿名类等
- Chrome开发者工具不完全指南
- 【HDU 2147 kiki's game】
- Linux 基础操作
- 查看APK中MD5签名的方法