PHP 8.6.0 Beta 1 is available for testing

libxml_set_external_entity_loader

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

libxml_set_external_entity_loaderCambia el cargador de entidades externas por defecto

Descripción

function libxml_set_external_entity_loader(? callable $resolver_function): true

Cambia el cargador de entidades externas por defecto. Esto puede ser utilizado para reprimir la expansión de entidades externas arbitrarias para prevenir ataques XXE, incluso si LIBXML_NOENT ha sido definida para la operación respectiva, y esto es generalmente preferible a llamar a libxml_disable_entity_loader() .

Parámetros

resolver_function

Un callable con la siguiente firma:

function resolver(? string $public_id, string $system_id, array $context): resource |string |null
public_id
El ID público.
system_id
El ID del sistema.
context
Un array que contiene cuatro elementos "directory", "intSubName", "extSubURI" y "extSubSystem".
Esta callable debería devolver un resource , un string a través del cual puede abrirse un recurso. Si se devuelve null , la resolución de referencia de entidad fallará.

Valores devueltos

Retorna siempre true .

Historial de cambios

Versión Descripción
8.5.0 El tipo de retorno es ahora true ; anteriormente, era bool .

Ejemplos

Ejemplo #1 Ejemplo con 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());
?>

El ejemplo anterior mostrará:

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

Véase también

Found A Problem?

Learn How To Improve This PageSubmit a Pull RequestReport a Bug
+add a note

User Contributed Notes

There are no user contributed notes for this page.

AltStyle によって変換されたページ (->オリジナル) /