(PHP 5 >= 5.4.0, PHP 7)
libxml_set_external_entity_loader — Change le chargeur d'entités externes par défaut
Change le chargeur d'entités externes par défaut.
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
.
Cette fonction retourne TRUE
en cas de
succès ou FALSE
si une erreur survient.
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)