libxml_set_external_entity_loader デフォルトの外部エンティティローダーを変更する &reftitle.description; boollibxml_set_external_entity_loader callablenullresolver_function デフォルトの外部エンティティローダーを変更します。 たとえ LIBXML_NOENT が個別のXMLの操作に設定されている場合でも、 XXE攻撃を避けるために、任意の外部エンティティの展開を抑制するために使うことができます。 また、 libxml_disable_entity_loader を呼び出すことよりも、この関数を呼び出すほうが通常は好ましいです。 &reftitle.parameters; resolver_function 次のシグネチャを持つ callable を指定します。: resourcestringnullresolver stringpublic_id stringsystem_id arraycontext public_id パブリック ID system_id システムID context 4つのキーを持つ配列。 キーは "directory", "intSubName", "extSubURI", "extSubSystem" です。 この callable は、 リソースまたはリソースをオープンできる文字列あるいは &null; でなければなりません。&null; を返す場合、エンティティ参照の解決は失敗します。 &reftitle.returnvalues; &return.success; &reftitle.examples; <function>libxml_set_external_entity_loader</function> の例 bar XML; $dtd = << 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()); ?> ]]> &example.outputs; NULL ["intSubName"] => NULL ["extSubURI"] => NULL ["extSubSystem"] => NULL } bool(true) ]]> &reftitle.seealso; libxml_disable_entity_loader libxml_get_external_entity_loader