xml_set_unparsed_entity_decl_handler()
La fonction xml_set_unparsed_entity_decl_handler() est une fonction intégrée de PHP qui définit une fonction de rappel (callback) définie par l'utilisateur comme gestionnaire des déclarations d'entités non analysées dans un analyseur XML. Elle appartient à l'extension XML Parser et fonctionne exclusivement avec l'analyseur de style SAX, et non avec SimpleXML. Ce gestionnaire est utile lorsque vous devez traiter des entités non analysées (telles que des données binaires comme des images ou des PDF référencés dans du XML) sans les charger en mémoire.
Syntaxe
La syntaxe de la fonction xml_set_unparsed_entity_decl_handler() est la suivante :
Syntaxe de la fonction xml_set_unparsed_entity_decl_handler() en PHP
xml_set_unparsed_entity_decl_handler($parser, $handler)Où $parser est la ressource de l'analyseur XML sur laquelle le gestionnaire est défini, et $handler est le nom de la fonction de rappel définie par l'utilisateur qui traitera les déclarations d'entités non analysées.
Exemples d'utilisation
Examinons un exemple pratique d'utilisation de xml_set_unparsed_entity_decl_handler() en PHP.
Exemple : Définition d'une fonction de gestionnaire de déclarations d'entités non analysées
Supposons que vous disposiez d'un document XML contenant une déclaration d'entité non analysée. Vous pouvez utiliser la fonction xml_parser_create() pour créer un nouvel analyseur SAX, définir le gestionnaire à l'aide de xml_set_unparsed_entity_decl_handler(), puis analyser les données XML :
Définition d'une fonction de gestionnaire de déclarations d'entités non analysées en PHP
function handle_unparsed_entity($parser, $name, $base, $systemId, $publicId, $notationName) {
echo "Unparsed entity '$name' found: $systemId (notation: $notationName)\n";
}
$xml_parser = xml_parser_create();
xml_set_unparsed_entity_decl_handler($xml_parser, "handle_unparsed_entity");
$xml_data = '<?xml version="1.0"?>
<!DOCTYPE root [
<!ENTITY logo SYSTEM "logo.png" NDATA png>
]>
<root/>';
xml_parse($xml_parser, $xml_data, true);
xml_parser_free($xml_parser);Ce code crée un nouvel analyseur SAX à l'aide de xml_parser_create(). Il enregistre ensuite la fonction de rappel handle_unparsed_entity() pour traiter les déclarations d'entités non analysées. Lorsque xml_parse() traite la chaîne XML, la fonction de rappel s'exécute et affiche les détails de l'entité. Vous pouvez modifier la fonction de rappel pour extraire des informations spécifiques ou effectuer toute autre action nécessaire.
Conclusion
Dans cet article, nous avons abordé la fonction xml_set_unparsed_entity_decl_handler() de PHP et son intégration avec l'analyseur XML de style SAX. Nous avons expliqué ce que sont les entités non analysées, passé en revue la syntaxe de la fonction et fourni un exemple complet et fonctionnel. En utilisant ce gestionnaire dans vos applications PHP, vous pouvez traiter efficacement les références de données binaires dans le XML sans les charger en mémoire.
Pratique
Quelle est la fonction de la fonction xml_set_unparsed_entity_decl_handler en PHP ?