PHP - libxml_set_external_entity_loader() 函数



定义和用法

XML 是一种用于在网络上共享数据的标记语言,XML 既可供人类阅读,也可供机器读取。libXMLError 类包含 libxml 库抛出的错误。

libxml_set_external_entity_loader() 函数用于更改默认的外部实体加载器。

语法

libxml_set_external_entity_loader($function);

参数

序号 参数和描述
1

function(必填)

这是一个可调用的函数,具有 3 个参数,即 public id、system id 和上下文。

返回值

此函数返回一个布尔值,成功时为 TRUE,失败时为 FALSE。

PHP 版本

此函数首次引入于 PHP 5 版本,并在所有后续版本中可用。

示例

以下示例演示了 libxml_set_external_entity_loader() 函数的用法:

<html>
   <head>
      <body>
         <?php
            $str = <<<XML
            <!DOCTYPE test PUBLIC "-//TEST/BAR" "http://test.com/testbar">
            <test>bar</test>
            $dtd = <<<DTD
            <!ELEMENT test (#PCDATA)>
            libxml_set_external_entity_loader(
            function ($public, $sys, $context) use($dtd) {
               print_r($public);
               print_r($sys);
               print_r($context);
               $f = fopen("php://temp", "r+");
               fwrite($f, $dtd);
               rewind($f);
               return $f;
            } 
         );
         $doc = new DOMDocument;
         $r =  $doc->loadXML($str);
         print_r($doc->validate());
         ?>      
      </body>
   </head>   
</html> 

这将产生以下结果:

-//TEST/BARhttp://test.com/testbarArray ( 
   [directory] => [intSubName] => [extSubURI] => [extSubSystem] => ) 1
php_function_reference.htm
广告