(PHP 4, PHP 5, PHP 7, PHP 8)
xml_set_external_entity_ref_handler — 設定外部實體參考處理器
設定 XML 解析器 parser
的外部實體參考處理函式。
parser
XML 解析器。
handler
如果傳入 null
,處理器將會重置為其預設狀態。
空字串也會重置處理器,但自 PHP 8.4.0 起已棄用。
如果 handler
是一個 可呼叫物件 (callable),則該可呼叫物件會被設定為處理器。
如果 handler
是一個 字串 (string),它可以是透過 xml_set_object() 設定之物件的方法名稱。
自 PHP 8.4.0 起已棄用。
自 PHP 8.4.0 起,會在設定處理器時檢查可呼叫物件是否有效,而不是在呼叫它時檢查。這表示必須在設定方法字串作為回呼之前呼叫 xml_set_object()。然而,由於此行為也自 PHP 8.4.0 起被棄用,建議改用適當的 可呼叫物件 (callable) 作為方法。
處理器的簽名必須為
$parser
,$open_entity_names
,$base
,$system_id
,$public_id
parser
open_entity_names
base
system_id
) 的基礎。
system_id
public_id
如果實體已被處理,處理器應返回 true
,否則返回 false
。當返回 false
時,XML 解析器將停止解析,並且 xml_get_error_code() 將返回 XML_ERROR_EXTERNAL_ENTITY_HANDLING
。
永遠返回 true
。
版本 | 說明 |
---|---|
8.4.0 | 傳遞非 可呼叫物件 (callable) 的 字串 (string) 給 handler 現在已被棄用,請對方法使用適當的可呼叫物件,或使用 null 來重設處理器。 |
8.4.0 | 現在會在設定處理器時檢查 handler 作為 可呼叫物件 (callable) 的有效性,而不是在呼叫它時檢查。 |
8.0.0 |
parser 現在需要一個 XMLParser 實例;以前需要一個有效的 xml 資源 (resource)。 |
7.3.0 | 如果擴充功能是針對 libxml 建置的,則 handler 的回傳值將不再被忽略。以前,回傳值會被忽略,而且解析永遠不會停止。 |