(PHP 4, PHP 5, PHP 7, PHP 8)
xml_set_external_entity_ref_handler — 外部エンティティリファレンスハンドラを設定する
XML パーサ parser
の外部エンティティ参照用ハンドラ関数を設定します。
parser
外部エンティティリファレンスハンドラ関数を設定する XML パーサへの参照。
handler
handler
は、
parser
に関して xml_parse()
がコールされた際に必要な関数の名前を有する文字列です。
handler
という名前の関数は 5 つのパラメータをとり、
整数値を返す必要があります。ハンドラから返された値が false
の場合
(これは値が返されない場合に相当します)、XML パーサは処理を中断し、
xml_get_error_code() は
XML_ERROR_EXTERNAL_ENTITY_HANDLING
を返します。
$parser
,$open_entity_names
,$base
,$system_id
,$public_id
parser
open_entity_names
open_entity_names
は、
エンティティの処理を行うためにオープンされたエンティティの
名前のスペース区切りのリストです
(参照されるエンティティの名前を含みます)。
base
systemid
) を有しています。
現在このパラメータは常に空の文字列に設定されています。
system_id
systemId
は
エンティティ宣言で指定されたシステム ID です。
public_id
publicId
は、エンティティ宣言で
指定されたパブリック ID または指定されない場合は空の
文字列です。パブリック ID の中の空白文字は、XML 仕様で規定された
正規化を行っています。
ハンドラ関数が空の文字列あるいは false
に設定されている場合、
そのハンドラは無効となります。
注意: 関数名の代わりに、オブジェクトへの リファレンスを格納した配列とメソッド名を指定することもできます。
成功した場合に true
を、失敗した場合に false
を返します。
バージョン | 説明 |
---|---|
8.0.0 |
引数 parser は、
XMLParser インスタンスを期待するようになりました。
これより前のバージョンでは、リソースが期待されていました。
|
7.3.0 |
拡張モジュールが libxml を使ってビルドされた場合には、コールバック
handler
の戻り値が無視されることはなくなりました。
このバージョン以前はコールバックの戻り値が無視され、パースが止まりませんでした。
|
バージョン | 説明 |
---|---|
7.3.0 |
拡張機能が libxml を使ってビルドされていた場合、
handler の戻り値は無視されることはなくなりました。
これより前のバージョンでは、戻り値が無視されていた上、パースが止まりませんでした。
|