توابع PHP xml_set_external_entity_ref_handler()

تعریف و نحوه استفاده

توابع xml_set_external_entity_ref_handler() توابعی را تعریف می‌کند که در هنگام یافتن یک تجزیه‌کننده خارجی در یک مستند XML فراخوانی می‌شوند.

اگر پردازنده با موفقیت ایجاد شود، این توابع به true برمی‌گردد؛ در غیر این صورت به false برمی‌گردد.

نحوه استفاده

xml_set_external_entity_ref_handler(parser,نوع‌دهنده)
پارامترها توضیحات
parser ضروری. یک تجزیه‌کننده XML که باید استفاده شود، تعریف می‌کند.
نوع‌دهنده ضروری. یک توابعی که باید در هنگام یافتن یک تجزیه‌کننده خارجی فراخوانی شود، تعریف می‌کند.

از نوع‌دهنده توابع معینی که توسط پارامترها تعریف می‌شوند باید شش پارامتر داشته باشند:

پارامترها توضیحات
parser ضروری. یک متغیر تعریف می‌کند که شامل تجزیه‌کننده XML برای فراخوانی پردازنده است.
name ضروری. یک متغیر تعریف می‌کند که شامل نام خارجی است.
base

ضروری. یک متغیر تعریف می‌کند که شامل شناسه سیستم (system_id) اساسی برای تجزیه‌کننده‌های خارجی است.

امروزه این پارامتر معمولاً به یک رشته خالی تنظیم می‌شود.

system_id ضروری. متغیر شامل شناسه سیستم خارجی را مشخص می‌کند.
ضروری. متغیر شامل شناسه سیستم خارجی را مشخص می‌کند. public_id

ضروری. متغیر شامل شناسه عمومی خارجی را مشخص می‌کند.

نوع‌دهنده پارامتر نیز می‌تواند یک آرایه باشد که شامل مراجعه به شیء و نام روش است.

مثال

<?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 در خط %d", 
  xml_error_string(xml_get_error_code($parser)),
  xml_get_current_line_number($parser)));
  }
xml_parser_free($parser);
?>