xml_set_external_entity_ref_handler

外部エンティティリファレンスハンドラを設定する

説明

true xml_set_external_entity_ref_handler(XMLParser $parser, callablestringnull $handler)

XML パーサー parser の外部エンティティ参照用ハンドラ関数を設定します。

パラメータ

parser
XMLパーサー
handler

null が渡されると、ハンドラはデフォルトの状態にリセットされます。

警告

空文字列を渡すことでもハンドラはリセットされますが、これは PHP 8.4.0 以降非推奨となっています。

handler が callable の場合、その callable がハンドラとして設定されます。

handler が文字列の場合、xml_set_object で設定されたオブジェクトのメソッド名になります。

警告

PHP 8.4.0 以降、非推奨となっています。

警告

PHP 8.4.0 以降では、実際に呼び出されるときではなく、ハンドラを設定する際に callable であるかがチェックされます。 従って、コールバックとしてメソッド文字列を指定する場合、それより前に、 xml_set_object を呼び出しておく必要があります。 しかし、この動作も PHP 8.4.0 以降非推奨となっているため、メソッドには適切な callable を使用することが推奨されます。

handler のシグネチャは、以下でなければいけません:

bool handler(
    XMLParser $parser,
    string $open_entity_names,
    stringfalse $base,
    string $system_id,
    stringfalse $public_id
)
parser
ハンドラをコールするXMLパーサー
open_entity_names
エンティティの処理を行うためにオープンされたエンティティの 名前のスペース区切りのリストです (参照されるエンティティの名前を含みます)。
base
これは外部エンティティのシステム ID (systemid) のベースとして解決されます。
system_id
エンティティ宣言で指定されたシステム ID です。
public_id
エンティティ宣言で 指定されたパブリック ID または指定されない場合は空の 文字列です。パブリック ID の中の空白文字は、XML 仕様で規定された 正規化を行っています。

ハンドラは、エンティティを処理された場合、true を返す必要があります。 そうでない場合、false を返すべきです。 ハンドラから返された値が false の場合、XML パーサーは処理を中断し、 xml_get_error_code は XML_ERROR_EXTERNAL_ENTITY_HANDLING を返します。

戻り値

常に true を返します。

変更履歴

バージョン 説明
8.4.0 非 callable な string を handler に渡すことは、現在非推奨となっています。 メソッドには適切な callable を使用するか、ハンドラをリセットする場合は null を使用してください。
8.4.0 handler が callable として有効であるかどうかは、 呼び出し時ではなく、ハンドラーを設定する際にチェックされるようになりました。
8.0.0 引数 parser は、 XMLParser インスタンスを期待するようになりました。 これより前のバージョンでは、有効な xml resource が期待されていました。
7.3.0 拡張モジュールが libxml を使ってビルドされていた場合、 handler の戻り値は無視されることはなくなりました。 これより前のバージョンでは、戻り値が無視されていた上、パースが止まりませんでした。