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 控制此 XML 解析器是否启用 大小写折叠。默认情况下启用。
XML_OPTION_SKIP_TAGSTART integer 指定在标签名称开头应跳过多少个字符。
XML_OPTION_SKIP_WHITE bool 是否跳过由空格字符组成的值。
XML_OPTION_TARGET_ENCODING string 设置此 XML 解析器要使用的 目标编码。默认情况下,它设置为与 xml_parser_create() 使用的源编码相同。支持的目标编码为 ISO-8859-1US-ASCIIUTF-8

value

选项的新值。

返回值

成功时返回 true,失败时返回 false

错误/异常

当将无效值传递给 option 时,抛出 ValueError

在 PHP 8.0.0 之前,当将无效值传递给 option 时,该函数会返回 false,并生成 E_WARNING,同时使函数返回 false

变更日志

版本 描述
8.3.0 value 参数现在也接受布尔值。选项 XML_OPTION_CASE_FOLDINGXML_OPTION_SKIP_WHITE 现在是布尔选项。
8.0.0 parser 现在期望一个 XMLParser 实例;以前,期望的是一个有效的 xml resource
8.0.0 如果 option 无效,现在会抛出 ValueError
添加注释

用户贡献的注释 3 个注释

www.thomaskoch.it
16 年前
选项 XML_OPTION_SKIP_WHITE 在我的 PHP 5.2.6(使用 expat-1.95.8-5)中没有效果。要跳过仅由空格组成的 cdata,只需在您的 cdata 回调函数开头检查该条件。

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

// ... 继续处理 ...
}
?>
pupeno at pupeno dot com
21 年前
XML 区分大小写,因此,在我看来,禁用大小写折叠并不违反 xml 1.0 规范,而是相反,禁用大小写折叠使我们能够区分同一个字母的不同大小写('a' 和 'A'),在 XML 中它们是两个不同的东西。
在我看来,禁用大小写折叠是一种良好的做法,我认为它应该默认禁用。
更多信息请访问
http://www.isacat.net/2001/xml/case.htm

http://www.w3.org/TR/REC-xml
谢谢。
j[no_spam_please] at [thx]jessepearson dot net
17 年前
在下面的函数中,如果您不想让 php 抛出警告,需要更新两行。

将这两行
$elements[$index]['attributes'] = $tag['attributes'];
$elements[$index]['content'] = $tag['value'];

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