W3docs

xml_set_default_handler()

Функция xml_set_default_handler() в PHP устанавливает пользовательскую функцию как обработчик по умолчанию для XML-парсера Expat.

⚠️ Устарело: Эта функция объявлена устаревшей начиная с PHP 8.0.0. Расширение Expat XML Parser считается устаревшим. Для современной разработки на PHP рекомендуется использовать DOMDocument или SimpleXML.

Функция xml_set_default_handler() — это встроенная функция PHP, относящаяся к расширению Expat XML Parser. Она устанавливает пользовательскую функцию в качестве обработчика по умолчанию для символьных данных, которые не перехватываются xml_set_character_data_handler(). Это полезно, когда необходимо обрабатывать необработанное текстовое содержимое XML без определения специального обработчика символьных данных.

Синтаксис

Синтаксис функции xml_set_default_handler() выглядит следующим образом:

xml_set_default_handler(resource $parser, callable $handler): bool

Где $parser — ресурс XML-парсера, созданный с помощью xml_parser_create(), а $handler — имя пользовательской функции, которая будет обрабатывать символьные данные XML. Функция возвращает true в случае успеха или false в случае ошибки.

Примеры использования

Рассмотрим практический пример использования xml_set_default_handler() в PHP.

Пример: Установка функции обработчика по умолчанию

Предположим, у вас есть XML-строка, которую нужно разобрать с помощью Expat XML Parser. Вы можете использовать xml_parser_create() для создания нового парсера, установить обработчик по умолчанию, а затем разобрать данные:

Установка функции обработчика по умолчанию в PHP

function handle_default($parser, $data) {
    echo "Default handler received: " . trim($data) . "\n";
}

$xml_parser = xml_parser_create();
xml_set_default_handler($xml_parser, "handle_default");

$xml_data = "<root>Hello World</root>";
if (xml_parse($xml_parser, $xml_data, true) === false) {
    echo "Parse error: " . xml_error_string(xml_get_error_code($xml_parser)) . "\n";
}
xml_parser_free($xml_parser);

Этот код создаёт парсер Expat с помощью xml_parser_create(). Затем функция handle_default() устанавливается для перехвата символьных данных, которые не обрабатываются xml_set_character_data_handler(). Функция xml_parse() обрабатывает XML-строку, вызывая обработчик по умолчанию для текстового содержимого. Добавленная проверка ошибок использует xml_get_error_code() и xml_error_string() для обнаружения и отображения любых сбоев разбора. Наконец, xml_parser_free() освобождает ресурс парсера.

Заключение

В этой статье мы рассмотрели функцию PHP xml_set_default_handler() и принцип её работы с расширением Expat XML Parser. Мы объяснили её синтаксис, уточнили роль в обработке символьных данных и привели полный пример с обработкой ошибок. Обратите внимание, что расширение Expat является устаревшим начиная с PHP 8.0.0. Используя xml_set_default_handler(), вы можете эффективно обрабатывать необработанное текстовое содержимое XML в своих PHP-приложениях, однако в современных проектах предпочтительнее использовать DOMDocument или SimpleXML.

Практика

Практика
Что делает установка обработчика по умолчанию XML в PHP?
Что делает установка обработчика по умолчанию XML в PHP?
Was this page helpful?