Change le chargeur d'entités externes par défaut

# libxml_set_external_entity_loader

(PHP 5 >= 5.4.0, PHP 7)

libxml_set_external_entity_loader — Change le chargeur d'entités externes par défaut

### Description

libxml_set_external_entity_loader ( callable `$resolver_function` ) : bool

Change le chargeur d'entités externes par défaut.

### Liste de paramètres

`resolver_function`

  Une callable qui accepte trois arguments. Deux chaines, l'id public et l'id système, et un contexte (un tableau avec quatre clés) comme troisième argument. Cette callback doit retourner une ressource, une chaine servant à ouvrir une ressource ou `NULL`.

### Valeurs de retour

Cette fonction retourne `TRUE` en cas de succès ou `FALSE` si une erreur survient.

### Exemples

Exemple #1 Exemple avec libxml_set_external_entity_loader()

`<?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());
?>`

L'exemple ci-dessus va afficher :

    string(10) "-//FOO/BAR"
    string(25) "http://example.com/foobar"
    array(4) {
        ["directory"]    => NULL
        ["intSubName"]   => NULL
        ["extSubURI"]    => NULL
        ["extSubSystem"] => NULL
    }
    bool(true)

### Voir aussi

- libxml_disable_entity_loader() - Désactive le chargement des entités externes