對於想知道這個函式實際處理哪些事件的人來說
它用於發現 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 — 設定預設處理器
設定 XML 解析器 parser
的預設處理函式。
parser
XML 解析器。
handler
如果傳入 null
,處理器將會重置為預設狀態。
空字串也會重置處理器,但自 PHP 8.4.0 起已棄用。
如果 handler
是一個 可呼叫 的值,則該可呼叫值將被設定為處理器。
如果 handler
是一個 字串,它可以是使用 xml_set_object() 設定的物件之方法名稱。
自 PHP 8.4.0 起已棄用。
從 PHP 8.4.0 開始,會在設定處理器時檢查可呼叫值是否有效,而不是在呼叫它時檢查。這表示必須在將方法字串設定為回呼之前呼叫 xml_set_object()。然而,由於此行為也從 PHP 8.4.0 開始棄用,建議改用適當的 可呼叫 值作為方法。
處理器的簽章必須為
parser
資料
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() { ... }
函式 parseDEFAULT() { ... }
在 PHP5 下,parseDEFAULT 不會接收到任何字元數據,但在 PHP4 下會。至少這是我在遷移到 PHP5 後發生的奇怪事情(沒有發生)的看法。
我的解決方案是新增 xml_set_character_data_handler($parser, 'parseDEFAULT')。這對我有用。
我在兩個 PHP5 安裝版本中遇到相同的問題:一個接受使用預設處理器,而另一個只使用 character_data 處理器。
也許是設定問題……
;) Nonor.