xml_parser_set_option

(PHP 4, PHP 5, PHP 7, PHP 8)

xml_parser_set_optionУстановка значения настройки XML-анализатора

Описание

xml_parser_set_option(XMLParser $parser, int $option, string|int|bool $value): bool

Устанавливает значение настройки XML-анализатора.

Список параметров

parser

Ссылка на XML-анализатор.

option

Какую настройку требуется установить. Смотрите ниже.

Доступны следующие настройки:

Настройки XML-анализатора
Константа Тип данных Описание
XML_OPTION_CASE_FOLDING bool Требуется ли включить case-folding для этого анализатора. Включено по умолчанию.
XML_OPTION_SKIP_TAGSTART integer Задаёт количество символов с начала имени тега, которые следует пропустить.
XML_OPTION_SKIP_WHITE bool Требуется ли пропускать значения, состоящие из пробелов.
XML_OPTION_TARGET_ENCODING string Устанавливает кодировку, которая будет использоваться XML анализатором. По умолчанию используется кодировка заданная при вызове функции xml_parser_create(). Поддерживаются кодировки ISO-8859-1, US-ASCII и UTF-8.

value

Новое значение настройки.

Возвращаемые значения

Возвращает true в случае успешного выполнения или false в случае возникновения ошибки.

Ошибки

Если в параметр option передано недопустимое значение, выбрасывается исключение ValueError.

До PHP 8.0.0 функция возвращала значение false, когда отправка в параметр option недопустимого значения приводила к ошибке уровня E_WARNING, что и заставляло функцию возвращать логическое значение false.

Список изменений

Версия Описание
8.3.0 Теперь параметр value также принимает логические значения. Настройки XML_OPTION_CASE_FOLDING и XML_OPTION_SKIP_WHITE теперь логические.
8.0.0 Параметр parser ожидает экземпляр класса XMLParser; раньше параметр ждал корректный xml-ресурс (resource).
8.0.0 Теперь выбрасывается исключение ValueError, если значение параметра option недопустимо.
add a note

User Contributed Notes 3 notes

up
2
www.thomaskoch.it
15 years ago
The option XML_OPTION_SKIP_WHITE has no effect in my PHP 5.2.6 (with expat-1.95.8-5). To skip cdata composed of white space only, simply check for that at the beginning of your cdata callback function:

<?php
function callback_cdata($parser, $cdata)
{
if(!
trim($cdata))
return;

// ... continue processing ...
}
?>
up
1
pupeno at pupeno dot com
21 years ago
XML is case sensitive, then, from my point of view, disabling case folding doesn't goes against xml 1.0 specifications but the contrary, disabling case folding allow us to distiguish between diferent cases of the same letter ('a' and 'A') which of XML are two diferent things.
From my point of view, disabling case folding is a good practice and I think it should be disabled by default.
More information on:
http://www.isacat.net/2001/xml/case.htm
and
http://www.w3.org/TR/REC-xml
Thank you.
up
0
j[no_spam_please] at [thx]jessepearson dot net
17 years ago
In the function below, you need to update two lines if you don't want php to throw warnings.

change these two:
$elements[$index]['attributes'] = $tag['attributes'];
$elements[$index]['content'] = $tag['value'];

to this:
$elements[$index]['attributes'] = empty($tag['attributes']) ? "" : $tag['attributes'];
$elements[$index]['content'] = empty($tag['value']) ? "" : $tag['value'];
To Top