PHP Conference Japan 2024

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_PARSE_HUGE bool 允许解析大于 10 MB 的文档。此选项应仅在文档大小有限制时启用,否则可能导致拒绝服务攻击。此选项仅在使用 libxml2 时可用。
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.4.0 添加了选项XML_OPTION_PARSE_HUGE
8.3.0 value参数现在也接受布尔值。选项XML_OPTION_CASE_FOLDINGXML_OPTION_SKIP_WHITE现在是布尔选项。
8.0.0 parser现在期望一个XMLParser实例;以前,期望的是有效的xmlresource
8.0.0 如果option无效,现在会抛出ValueError
添加注释

用户贡献的注释 3 条注释

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

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

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

http://www.w3.org/TR/REC-xml
谢谢。
0
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