# xml_set_external_entity_ref_handler

(PHP 4, PHP 5, PHP 7)

xml_set_external_entity_ref_handler — 建立外部实体指向处理器

### 说明

xml_set_external_entity_ref_handler ( resource `$parser` , callable `$handler` ) : bool

为 `parser` 参数指定的 XML 解析器建立外部实体指向处理器函数。

### 参数

`parser`

  XML 解析器的引用，用于建立外部实体指向处理器。

`handler`

  参数 `handler` 为表示函数名称的字符串，函数必须在为 `parser` 指定的解析器调用 xml_parse() 函数时已存在。

  由 `handler` 参数命名的函数名必须接受五个参数，并应该返回一个整型值。如果处理器的返回值为 `FALSE`（这也是函数没有确定返回值时的返回值），XML 解析器将停止解析， xml_get_error_code() 函数将返回 `XML_ERROR_EXTERNAL_ENTITY_HANDLING`。

  handler ( resource `$parser` , string `$open_entity_names` , string `$base` , string `$system_id` , string `$public_id` )
  `parser`
    第一个参数 parser 为指向要调用处理器的 XML 解析器的指针。
  `open_entity_names`
    第二个参数 `open_entity_names` 是为该实体的解析开放的实体名列表（包括被指向的实体名），这些实体名由空格隔开。
  `base`
    这个参数是解析外部实体的系统标识符（`system_id`）的基础。当前该参数通常都被设置为空字符串。
  `system_id`
    第四个参数 `system_id` 是在实体定义声明中指定的系统标识符。
  `public_id`
    第五个参数 `public_id` 是在实体定义声明中指定的公共标识符，如果未指定任何标识符，则该字符串为空。公共标识符中的空格将按照 XML 的要求被正常化。

  如果处理器函数名被设置为空字符串或者 `FALSE`，则该有问题的处理器将被屏蔽。

  > Note: 除了函数名，含有对象引用的数组和方法名也可以作为参数。

### 返回值

成功时返回 `TRUE`， 或者在失败时返回 `FALSE`。