XML အချက်အလက်များကို PHP ၏ XML_Parse () function ကို သုံး. XML ဒေတာများကို pars-8 encoded နှင့်မလျော်ကန်စွာကိုင်တွယ်လျှင်၎င်းသည်မလျော်ကန်စွာကိုင်တွယ်နေပါက၎င်းသည် parled တွင်ပါ 0 င်သောအကြောင်းအရာများကိုပါ 0 င်စေနိုင်သည်။ XML ဖိုင်ခေါင်းစဉ်များက UTF-8 encoding ကိုကြေငြာသောအခါဤပြ problem နာသည်များသောအားဖြင့်, ဤဆောင်းပါးသည်ပြ problem နာ၏အကြောင်းရင်းများကိုမိတ်ဆက်ပေးပြီးသတ်သတ်မှတ်မှတ်ဖြေရှင်းနည်းများပေးလိမ့်မည်။
XML_Parse () သည် PHP အတွက် Expat Parser သို့ interface ကိုဖြစ်သည်။ Expat ကိုယ်နှိုက်သည်ဇာတ်ကောင် encoding နှင့်အလွန်တင်းကြပ်သည်။ XML string encoding သည်ရှင်းလင်းသောနှင့်တသမတ်တည်း, အထူးသဖြင့်တသမတ်တည်း, XML ဒေတာများကို UTF-8 ဟုကြေငြာသော်လည်း PHP သည်မမှန်ကန်ကြောင်း encoding ပြောင်းလဲခြင်းကိုပြုလုပ်ပါကဤအချက်အလက်များကိုလုပ်ဆောင်သောအခါမမှန်ကန်ကြောင်း encoding ပြောင်းလဲခြင်းကိုပြုလုပ်ပါက concled code ပေါ်လာလိမ့်မည်။
အခြားဘုံပြ problem နာတစ်ခုမှာပြင်ပမှ XML ဖိုင်များကိုပြင်ပမှဖတ်သည့်အခါသင့်လျော်သော stream encoding ကို UTF-8 သို့ပြောင်းလဲခြင်းမရှိသေးပါ။
<?php
$xml = file_get_contents("https://m66.net/data/sample.xml");
$parser = xml_parser_create(); // ပုံမှန်အားဖြင့်အသုံးပြုခဲ့သည် ISO-8859-1
xml_parse($parser, $xml, true);
echo "အောင်မြင်သောခွဲခြမ်းစိတ်ဖြာ";
xml_parser_free($parser);
?>
အထက်ပါကုဒ်များကို run နိုင်သော်လည်း sample.xml သည် UTF-8 encoded ဖြစ်သော်လည်း၎င်းသည်အမျှင်ကုဒ်များသို့မဟုတ်ခွဲခြမ်းစိတ်ဖြာခြင်းတွင်တိုက်ရိုက်ကျရှုံးနိုင်သည်။
UTF-8 ဟု paroding ကိုသုံးရန် XML_Parser_Create () ကိုသုံးနိုင်သည်။ encoding ကို UTF-8 ကိုသတ်မှတ်ရန် Parser အားမှန်ကန်သော encoding ကိုအသုံးပြုရန်ပြောနိုင်သည်။
<?php
$xml = file_get_contents("https://m66.net/data/sample.xml");
$parser = xml_parser_create('UTF-8'); // အတိအလင်းအသေးစိတ်ဖော်ပြပါ UTF-8
xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
xml_parse($parser, $xml, true);
echo "အောင်မြင်သောခွဲခြမ်းစိတ်ဖြာ";
xml_parser_free($parser);
?>
ဤနည်းလမ်းသည် Parser သည်ဒေတာကို UTF-8 အရသိရသည်စာဖတ်ခြင်းကိုသေချာစေရန်တရုတ်သို့မဟုတ်အခြား Multibyte ဇာတ်ကောင်များပါ 0 င်သည့် XML အကြောင်းအရာကိုမှန်ကန်စွာပြုပြင်နိုင်သည်။
ပြင်ပအရင်းအမြစ်တစ်ခုမှရရှိသောအချက်အလက်များ (ဤသို့သော interface သို့မဟုတ်ဝေးလံခေါင်သီသော XML ဖိုင်ကဲ့သို့) သည်အမှန်ပင် UTF - 8 ကို သင်မသေချာပါက,
<?php
$xml = file_get_contents("https://m66.net/data/sample.xml");
// detect နှင့်မှကူးပြောင်း UTF-8
if (mb_detect_encoding($xml, 'UTF-8', true) === false) {
$xml = iconv('GBK', 'UTF-8', $xml); // မူလ encoding ကိုသင့်လျော်သည်ဟုပြုပြင်ပါ
}
$parser = xml_parser_create('UTF-8');
xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
xml_parse($parser, $xml, true);
echo "အောင်မြင်သောခွဲခြမ်းစိတ်ဖြာ";
xml_parser_free($parser);
?>
၎င်းသည်အထူးသဖြင့်တတိယပါတီပလက်ဖောင်းများမှဒေတာများကိုကိုင်တွယ်ဖြေရှင်းသည့်အခါ၎င်းသည်ရှေ့နောက်မညီစာဝှက်ခြင်းပြ problem နာကိုရှောင်ရှားနိုင်သည်။
XML ဖိုင်၏ header ကြေငြာချက်တွင်အောက်ပါအကြောင်းအရာများပါ 0 င်သည်ကိုစစ်ဆေးပါ။
<?xml version="1.0" encoding="UTF-8"?>
အကယ်. UTF-8 ကိုကြေငြာသော်လည်းအမှန်တကယ် encoding သည် UTF-8 ကို UTF - 8 မဟုတ်ဘဲ PHP, အမှိုက်များကိုခွဲခြမ်းစိတ်ဖြာရန်သို့မဟုတ်ခွဲခြမ်းစိတ်ဖြာမှုပျက်ကွက်ခြင်းဖြစ်နိုင်သည်။ ဤအချိန်တွင်အရင်းအမြစ်ဖိုင် encoding ကိုပထမ ဦး ဆုံးတည့်မတ်ပေးသင့်သည်သို့မဟုတ် PHP ကို အသုံးပြု. ပြောင်းလဲသင့်သည်။