PHP ၏ XML_Parse () function ကို အသုံးပြု. XML အချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာသည့်အခါမှားယွင်းသောသို့မဟုတ်ပုံပျက်သော XML tags များကြောင့်ခွဲခြမ်းစိတ်ဖြာခြင်းသည်မကြာခဏပျက်ကွက်တတ်သည်။ ဤအခြေအနေသည်အသုံးပြုသူများမှ 0 င်ရောက်သည့် XML ကြိုးများသို့မဟုတ်အရိုက်ခံရသည့်သတင်းရင်းမြစ်များမှအချက်အလက်များ (တတိယပါတီများတင်ထားသောပြင်ပ APIs ကဲ့သို့သော) အချက်အလက်များမှအချက်အလက်များ, ဤဆောင်းပါးသည်ဤအမှားများကိုလျောက်ပတ်စွာမည်သို့ကိုင်တွယ်ရမည်ကိုရှင်းပြပါလိမ့်မည်။
XML_Parse () သည် PHP ၏ XML Parser (Expat စာကြည့်တိုက်ကို အခြေခံ. ) XML data ကိုအခြေခံလမ်းဖြင့်ဖော်ပြသော XML အချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာခြင်းဖြင့်ခွဲထုတ်ခြင်း၏အစိတ်အပိုင်းဖြစ်သည်။
$parser = xml_parser_create();
xml_parse($parser, $xmlString, true);
xml_parser_free($parser);
အကယ် . XML $ XMLString တွင် XMLString သည်မမှန်ကန်ပါက function သည် မှားယွင်းသော အမှားအယွင်းများကိုပြန်ပို့လိမ့် မည် ။
တံဆိပ်မပိတ်ထားပါ
<note><to>Tove</to><from>Jani</note>
အထူးအက္ခရာများသည်မလွတ်လျငြိမ်နိုင်ပါ။
<message>5 < 10 & 7 > 3</message>
ခွင့်ပြုချက်မရှိဘဲစာလုံးများသို့မဟုတ်တရားမဝင် encodings
မှားယွင်းတဲ့အသိုက်ဖွဲ့စည်းပုံ
သင်စံမဟုတ်သောသို့မဟုတ်အကျင့်ပျက် XML ကိုကိုင်တွယ်ရန်လိုအပ်သည့်အခါသင် Preprocess လုပ်ရန်နည်းဗျူဟာအချို့ကိုသုံးနိုင်သည်။
PHP ၏ DomDocument လူတန်းစားသည် XML ကိုတင်သောအခါအမှားအယွင်းများကိုပိတ်ထားရန်ခွင့်ပြုသည်။
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$success = $doc->loadXML($xmlString);
if (!$success) {
foreach (libxml_get_errors() as $error) {
echo "အကြံပြုချက်များကိုပြုပြင်ပါ:" . $error->message . "\n";
}
libxml_clear_errors();
}
ဒီနည်းလမ်းကိုမသတ်မှတ်နိုင်ပေမဲ့ဘာမှားသွားတာလဲဆိုတာမင်းကိုပြောပြနိုင်တယ်။
XML ၏ဖွဲ့စည်းပုံကိုသင်သိပါက၎င်းကိုပုံမှန်သို့မဟုတ် string အစားထိုးခြင်းဖြင့်၎င်းကိုပြင်ဆင်နိုင်သည်။
function sanitizeXml($xml) {
// တရားမဝင်အစားထိုးပါ & လူသူမ
$xml = preg_replace('/&(?!amp;|lt;|gt;|quot;|apos;)/', '&', $xml);
// အခြားစည်းမျဉ်းများကိုလိုအပ်သလိုပြီးစီးနိုင်သည်
return $xml;
}
XML parsing ကို function တစ်ခုတွင်ခွဲခြမ်းစိတ်ဖြာနိုင်ပြီးအပြောင်းအလဲများနည်းပါးခြင်း,
function safeXmlParse($xmlString) {
$parser = xml_parser_create();
if (!xml_parse($parser, $xmlString, true)) {
$error = xml_error_string(xml_get_error_code($parser));
$line = xml_get_current_line_number($parser);
error_log("XMLခွဲခြမ်းစိတ်ဖြာခြင်းမအောင်မြင်ပါ: $error at line $line");
// မလုပ်မနေရမဟုတ်သော:အုပ်ချုပ်ရေးမှူးအားအကြောင်းကြားပါသို့မဟုတ်မှတ်တမ်းကိုကျော်ပါ
return false;
}
xml_parser_free($parser);
return true;
}
သင် XML data ကို url data မှ url data မှရရှိသည်ဆိုပါစို့ ။
$url = "https://api.m66.net/feed";
$xmlData = file_get_contents($url);
$xmlData = sanitizeXml($xmlData);
if (!safeXmlParse($xmlData)) {
echo "ဒီခွဲခြမ်းစိတ်ဖြာနိုင်ခြင်း XML အချက်များ,logged。\n";
} else {
echo "XML အောင်မြင်သောခွဲခြမ်းစိတ်ဖြာ!\n";
}
အထူးသဖြင့် XML ကိုရှုပ်ထွေးစေရန်အတွက် သပ်သပ်ရပ်ရပ် , Xmllint သို့မဟုတ် Python ၏ လှပမှုများ ကဲ့သို့သောပြင်ပကိရိယာများကိုသန့်ရှင်းရေးလုပ်ရန်နှင့် PHP သို့တင်သွင်းရန်အတွက် PHP သို့တင်သွင်းနိုင်သည်။
XML ခွဲခြမ်းစိတ်ဖြာအမှားများကိုကိုင်တွယ်ရန်သော့ချက်သည် preprocessing + အမှားသည်းခံစိတ်မှု + အမှားသည်းခံစိတ်ပြန်လည်နာလန်ထူရေးယန္တရားတွင်ရှိသည်။ XML_Parse () သည်အခြေခံကျသော်လည်းတင်းကြပ်သော XML parsing method ဖြစ်သော်လည်း၎င်းသည် dom, libxml, manual ပြုပြင်ရေးမဟာဗျူဟာများနှင့်အခြားနည်းလမ်းများနှင့်မမှန်မကန် XML နှင့်လိုက်လျောညီထွေဖြစ်အောင်ပြုလုပ်နိုင်သည်။
နောက်တစ်ခါသင် "လျှို့ဝှက်ဆန်းကြယ်သော xml ခွဲခြမ်းစိတ်ဖြာပျက်ကွက်ခြင်း" ကိုသင်ရင်ဆိုင်နေရသည်။