对于任何想知道此函数实际处理哪些事件的人
它用于在找到 XML 注释或其他声明(如 xml-stylesheet)的情况下。在这种情况下,data 参数按原样包含整个字符串,例如
<!-- 这是一个注释 -->
<?xml-stylesheet title="mystyle" type="text/xsl" href="style.xsl" ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
xml_set_default_handler — 设置默认处理程序
parser
XML 解析器。
handler
如果传递 null
或空字符串,则处理程序将重置为其默认状态。
如果 handler
是一个 callable,则该可调用对象将被设置为处理程序。
如果 handler
是一个 string,它可以是使用 xml_set_object() 设置的对象的方法的名称。
处理程序的签名必须为
parser
data
data
包含字符数据。这可能是 XML 声明、文档类型声明、实体或其他没有其他处理程序存在的其他数据。
始终返回 true
。
对于任何想知道此函数实际处理哪些事件的人
它用于在找到 XML 注释或其他声明(如 xml-stylesheet)的情况下。在这种情况下,data 参数按原样包含整个字符串,例如
<!-- 这是一个注释 -->
<?xml-stylesheet title="mystyle" type="text/xsl" href="style.xsl" ?>
在我看来,在 PHP5 中,使用 xml_set_default_handler() 定义为默认处理程序的函数不再传递 cdata
即
xml_set_element_handler($this->parser, 'parseSTART', 'parseEND');
xml_set_default_handler($this->parser, 'parseDEFAULT');
function parseSTART() { ... }
function parseEND() { ... }
function parseDEFAULT() { ... }
在 PHP5 下,parseDEFAULT 不会传递任何 cdata,但在 PHP4 下会传递。至少这是我对迁移到 PHP5 后发生的奇怪(不)事情的理解。
我的解决方案是添加一个 xml_set_character_data_handler($parser, 'parseDEFAULT')。它对我有用。
我在使用两个 PHP5 安装时遇到了同样的问题:一个接受使用默认处理程序,而另一个只使用 character_data 处理程序。
可能是配置问题...
;) Nonor。