【PHP8.x】xml_set_external_entity_ref_handler関数の使い方
xml_set_external_entity_ref_handler関数は、XMLパーサーが外部エンティティ参照を検出した際に呼び出されるコールバック関数を設定する関数です。外部エンティティ参照とは、XMLドキュメント内で外部にあるリソースを参照する仕組みであり、DTD(Document Type Definition)などで定義されます。この関数を使うことで、外部エンティティ参照の解決をカスタマイズし、外部リソースへのアクセス方法を制御できます。
具体的には、xml_set_external_entity_ref_handler
関数は、XMLパーサーリソース、開始要素ハンドラ関数、終了要素ハンドラ関数という3つの引数を取ります。XMLパーサーリソースは、xml_parser_create
関数などで作成されたXMLパーサーのインスタンスです。開始要素ハンドラ関数と終了要素ハンドラ関数は、それぞれ外部エンティティ参照の開始時と終了時に呼び出されるPHPの関数です。
これらのハンドラ関数は、外部エンティティ参照の名前、ベースURI、エンティティのシステムID、パブリックIDなどの情報を受け取ることができます。システムエンジニアは、これらの情報に基づいて、外部エンティティを解決し、必要なデータをXMLパーサーに提供する処理を記述します。外部エンティティ参照ハンドラを設定することで、XMLドキュメントの検証、データの読み込み、エラー処理などを柔軟に行うことが可能になります。セキュリティ上の観点からも、信頼できない外部ソースへのアクセスを制限するために、このハンドラを適切に設定することが重要です。
基本的な使い方
構文(syntax)
xml_set_external_entity_ref_handler(XMLParser $parser, callable $handler): bool
引数(parameters)
XMLParser $parser, callable|string|null $handler
- XMLParser $parser: 処理対象のXMLパーサーオブジェクト
- callable|string|null $handler: 外部エンティティ参照を処理するコールバック関数、またはその関数名(文字列)、あるいは無効にする場合はnull
戻り値(return)
true
xml_set_external_entity_ref_handler関数は、外部エンティティ参照が発生した際に呼び出されるコールバック関数を設定します。設定が成功した場合は true を返します。