Aller au contenu

xml_set_processing_instruction_handler()

La fonction xml_set_processing_instruction_handler() définit une fonction définie par l'utilisateur comme gestionnaire des instructions de traitement dans un analyseur XML. Elle appartient à l'extension héritée xml et est utilisée avec l'analyse de style SAX, et non avec la bibliothèque SimpleXML. Cette fonction est utile lorsque vous devez gérer des instructions de traitement dans un fichier XML, par exemple pour extraire des informations spécifiques ou effectuer d'autres actions lors de l'analyse SAX.

⚠️ Avertissement de dépréciation : L'extension xml a été dépréciée dans PHP 8.0 et complètement supprimée dans PHP 8.2. Cette fonction n'est disponible que dans PHP 7.4 et les versions antérieures. Pour les projets modernes, utilisez plutôt XMLReader ou DOMDocument.

Syntaxe

La syntaxe de la fonction xml_set_processing_instruction_handler() est la suivante :

php
xml_set_processing_instruction_handler($parser, $handler)

$parser est la ressource de l'analyseur XML, et $handler est un appelable ou une chaîne de caractères contenant le nom de la fonction définie par l'utilisateur qui gérera les instructions de traitement.

Exemples d'utilisation

Examinons un exemple pratique d'utilisation de xml_set_processing_instruction_handler() en PHP.

Exemple : Définition d'une fonction gestionnaire d'instructions de traitement

Supposons que vous disposiez d'une chaîne XML contenant des instructions de traitement. Vous pouvez utiliser la fonction xml_parser_create() pour créer un nouvel analyseur XML, puis définir une fonction gestionnaire d'instructions de traitement à l'aide de xml_set_processing_instruction_handler(), comme suit :

php
function handle_processing_instruction($parser, $target, $data) {
    echo "Processing instruction found: $target - $data\n";
}

$xml_parser = xml_parser_create();
xml_set_processing_instruction_handler($xml_parser, "handle_processing_instruction");

$xml_data = '<?xml version="1.0"?><root><?PI target data?></root>';
if (!xml_parse($xml_parser, $xml_data)) {
    echo "XML parse error: " . xml_error_string(xml_get_error_code($xml_parser));
}

xml_parser_free($xml_parser);

Ce code crée un nouvel analyseur à l'aide de xml_parser_create(). Il définit ensuite une fonction personnalisée pour gérer les instructions de traitement. La fonction xml_parse() traite la chaîne XML, déclenchant le gestionnaire lorsqu'il rencontre une instruction de traitement. La valeur de retour est vérifiée pour détecter et signaler toute erreur d'analyse. Enfin, xml_parser_free() nettoie la ressource de l'analyseur après utilisation.

Conclusion

Dans cet article, nous avons présenté la fonction PHP xml_set_processing_instruction_handler() et son utilisation pour définir un gestionnaire d'instructions de traitement pour un analyseur XML dans l'extension héritée xml. Nous en avons expliqué la syntaxe et fourni un exemple pratique. Notez que, l'extension xml ayant été supprimée dans PHP 8.2, les applications modernes devraient privilégier XMLReader ou DOMDocument pour le traitement XML. Pour les bases de code héritées fonctionnant sous PHP 7.4 ou antérieur, cette fonction reste un moyen fiable de gérer les instructions de traitement lors de l'analyse SAX.

Pratique

Que fait la fonction xml_set_processing_instruction_handler() en PHP ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.