PHP如何规定当解析器在 XML 文档中找到符号声明时被调用的函数
编程狂想曲
2024-04-02 17:21
这篇文章将为大家详细讲解有关PHP如何规定当解析器在 XML 文档中找到符号声明时被调用的函数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
当 PHP 解析器在 XML 文档中遇到符号声明时,它将调用一个由用户定义的处理程序函数来处理声明。符号声明是指 XML 规范中定义的特殊语法结构,用于声明外部实体、命名空间和符号。
符号声明语法
符号声明的语法如下:
<!符号声明>
其中,符号声明
可以是以下三种类型之一:
- 实体声明 (<!ENTITY ...>)
- 命名空间声明 (<!ATTLIST ...>)
- 记号声明 (<!NOTATION ...>)
处理程序函数
PHP 提供了 xml_set_external_entity_handler()
、xml_set_character_data_handler()
和 xml_set_notation_decl_handler()
函数来允许用户定义处理符号声明的处理程序函数。
处理程序函数签名
这些处理程序函数的签名如下:
-
bool xml_set_external_entity_handler(resource parser, callable handler)
-
bool xml_set_character_data_handler(resource parser, callable handler)
-
bool xml_set_notation_decl_handler(resource parser, callable handler)
其中:
parser
是指向 XML 解析器的资源句柄。handler
是一个用户定义的处理符号声明的函数。
处理程序函数参数
处理符号声明的处理程序函数接受以下参数:
-
resource parser
-
string $open_entity_name
-
string $base
-
string $system_id
-
string $public_id
-
string $notation_name
其中:
parser
是指向 XML 解析器的资源句柄。$open_entity_name
是打开实体的名称。$base
是实体的基础 URI。$system_id
是实体的系统标识符 (URI)。$public_id
是实体的公共标识符。$notation_name
是符号的名称。
处理程序函数返回值
处理符号声明的处理程序函数返回以下值:
- 实体声明处理程序:返回一个指向外部实体资源句柄,或
NULL
以停止解析。 - 字符数据处理程序:返回一个字符串,或
NULL
以停止解析。 - 符号声明处理程序:返回一个布尔值,
TRUE
表示解析器应该继续解析,FALSE
表示解析器应该停止解析。
示例
以下是一个示例,演示如何使用 xml_set_external_entity_handler()
函数定义处理实体声明的处理程序函数:
function my_entity_handler($parser, $open_entity_name, $base, $system_id, $public_id) {
// 在这里处理实体声明
}
$parser = xml_parser_create();
xml_set_external_entity_handler($parser, "my_entity_handler");
以上就是PHP如何规定当解析器在 XML 文档中找到符号声明时被调用的函数的详细内容,更多请关注编程学习网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341