PHP xml_set_external_entity_ref_handler() 함수
정의와 사용법
xml_set_external_entity_ref_handler() 함수는 파서가 XML 문서에서 외부 엔티티를 찾을 때 호출되는 함수를 정의합니다.
프로세서가 성공적으로 구성되면 이 함수는 true를 반환하며, 그렇지 않으면 false를 반환합니다.
문법
xml_set_external_entity_ref_handler(parser,handler)
매개변수 | 설명 |
---|---|
parser | 필수입니다. 사용할 XML 파서를 정의합니다. |
handler | 필수입니다. 파서가 외부 엔티티를 찾을 때 호출되는 함수를 정의합니다. |
제공 handler 매개변수가 정의하는 함수는 다섯 개의 매개변수를 가져야 합니다:
매개변수 | 설명 |
---|---|
parser | 필수입니다. XML 파서를 호출하는 변수를 정의합니다. |
name | 필수입니다. 외부 엔티티 이름을 포함하는 변수를 정의합니다. |
base |
필수입니다. 외부 엔티티의 시스템 식별자(system_id)를 포함하는 변수를 정의합니다. 현재 이 매개변수는 일반적으로 공백 문자열로 설정됩니다。 |
system_id | 필수. 외부 엔티티가 포함된 시스템 식별자 변수를 지정합니다. |
public_id | 필수. 외부 엔티티가 포함된 공공 식별자 변수를 지정합니다. |
설명
handler 매개변수는 또한 객체 참조와 메서드 이름을 포함한 배열일 수 있습니다.
예제
<?php $parser=xml_parser_create(); function char($parser,$data) { echo $data; } function ext_ent_handler($parser,$ent,$base,$sysID,$pubID) { echo "$ent"; echo "$sysID"; echo "$pubID"; } xml_set_character_data_handler($parser,"char"); xml_set_external_entity_ref_handler($parser, "ext_ent_handler"); $fp=fopen("test.xml","r"); while ($data=fread($fp,4096)) { xml_parse($parser,$data,feof($fp)) or die (sprintf("XML 오류: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } xml_parser_free($parser); ?>