လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> မပြည့်စုံသော URLs များကိုခွဲခြမ်းစိတ်ဖြာရန် Parse_url ကိုအသုံးပြုခြင်းကြောင့်ဖြစ်ပေါ်လာသောပြနာများ

မပြည့်စုံသော URLs များကိုခွဲခြမ်းစိတ်ဖြာရန် Parse_url ကိုအသုံးပြုခြင်းကြောင့်ဖြစ်ပေါ်လာသောပြနာများ

gitbox 2025-05-28

မပြည့်စုံသော URL သည်ပျောက်ဆုံးနေသော protocol headers http: // သို့မဟုတ် https: // သို့မဟုတ် hosts or hostnames များနှင့်အတူပျောက်ဆုံးနေသော hostnames များ, ဥပမာအားဖြင့်:

 $url1 = "/path/to/resource?foo=bar";
$url2 = "www.gitbox.net/index.php?x=1";
$url3 = "gitbox.net";

ဤအရာအလုံးစုံသည်အပြည့်အဝ URLs အပြည့်အဝ, သို့သော်အချို့သောအခြေအနေများတွင်၎င်းတို့ကို Parse_Url နှင့်ခွဲခြမ်းစိတ်ဖြာရန်လိုအပ်သည်။

2 ။ Parse_url function ကိုအခြေခံအသုံးပြုမှု

Parse_URL ၏အဓိပ္ပါယ်သည်အောက်ပါအတိုင်းဖြစ်သည် -

 array parse_url(string $url, int $component = -1)

၎င်းသည် url ၏အစိတ်အပိုင်းများပါ 0 င်သည့် actiretive array ကိုပြန်လည်ရောက်ရှိစေသည့်သို့မဟုတ်သတ်မှတ်ထားသောအပိုင်း၏တန်ဖိုးကိုကြိုးဖြင့်ပြန်ပို့သည်။

ဥပမာအားဖြင့်:

 $url = "https://gitbox.net/index.php?user=chatgpt&lang=php";
print_r(parse_url($url));

ထုတ်လုပ်မှု -

 Array
(
    [scheme] => https
    [host] => gitbox.net
    [path] => /index.php
    [query] => user=chatgpt&lang=php
)

ယခုအချိန်တွင် Parse_Url ၏စွမ်းဆောင်ရည်သည်အလွန်ပုံမှန်ဖြစ်သည်။

3 ။ မပြည့်စုံသော URL များနှင့်အဘယ်ပြ problems နာများပေါ်ပေါက်လာမည်နည်း။

3.1 ပျောက်ဆုံးနေသော protocol, host name ကိုလမ်းကြောင်းအတွက်မှားယွင်းနေသည်

URL သည် protocol ကိုချန်လှပ်သည်ဟုယူဆပါ။

 $url = "gitbox.net/index.php?x=1";
print_r(parse_url($url));

ဝင်သည်:

 Array
(
    [path] => gitbox.net/index.php
    [query] => x=1
)

Gitbox.net ကို hostname ဟုအသိအမှတ်မပြုကြောင်းသင်တွေ့လိမ့်မည်။ သို့သော်လမ်းကြောင်း၏တစ်စိတ်တစ်ပိုင်းအနေဖြင့်ကုသသည်။ Parse_Url သည် string တစ်ခုလုံးသည် hostname ပါ 0 င်သည့် URL ထက်လမ်းကြောင်းတစ်ခုဖြစ်သည်ဟုထင်မြင်သည်။

3.2 လမ်းကြောင်းတစ်ခုတည်းရှိလျှင် resolution သည်ပုံမှန်ဖြစ်သည်, သို့သော်သတင်းအချက်အလက်ကန့်သတ်ထားသည်

 $url = "/some/path?foo=bar";
print_r(parse_url($url));

ရလဒ် -

 Array
(
    [path] => /some/path
    [query] => foo=bar
)

ဤကိစ္စတွင် Parse_URL သည် ပုံမှန်အားဖြင့် string string thing န်းကျင်ကိုခွဲခြမ်းစိတ်ဖြာနိုင်သော်လည်း protocol နှင့် host လုံးဝမရှိချေ။

3.3 hostname တစ်ခုတည်းသာ, protocol နှင့်လမ်းကြောင်းမရှိပါ

 $url = "gitbox.net";
print_r(parse_url($url));

ရလဒ် -

 Array
(
    [path] => gitbox.net
)

အလားတူပင် Parse_Url က ၎င်းကိုအိမ်ရှင်မဟုတ်ဘဲလမ်းကြောင်းတစ်ခုအဖြစ်ဆက်ဆံသည်။

4 ။ မပြည့်စုံသော URLs ကိုခွဲခြမ်းစိတ်ဖြာရန်ဖြေရှင်းချက်

4.1 သဘောတူညီချက်ခေါင်းစဉ်ကိုဖြည့်စွက်ပါ

URL သည် http သို့မဟုတ် https ဖြစ်သင့်ကြောင်းသင်သိပါက Parse_Url ကို မခေါ်မီ protocol ကိုဖြည့်စွက်နိုင်သည်။

 if (strpos($url, '://') === false) {
    $url = 'http://' . $url;
}
print_r(parse_url($url));

ဤနည်းအားဖြင့်မူရင်း URL တွင် protocol တစ်ခုမရှိခြင်းဖြစ်သော်လည်း host name ကို parsing တွင်မှန်ကန်စွာဖော်ထုတ်နိုင်သည်။

4.2 လမ်းကြောင်းများသို့မဟုတ် query strings ကိုသီးခြားစီ

အကယ်. input string သည်လမ်းကြောင်းသို့မဟုတ်စုံစမ်းမှု string တစ်ခုဖြစ်ပါက host parse_url ကို ကျော်ပြီး parameters တွေကိုခွဲခြမ်းစိတ်ဖြာရန် string processing function ကိုတိုက်ရိုက်သုံးနိုင်သည်။

4.3 ပုံမှန်အသုံးအနှုန်းများနှင့်ပေါင်းစပ် preliminary တရားသဖြင့်စီရင်

URL format ကိုဆုံးဖြတ်ရန်ရိုးရှင်းသောပုံမှန်ကိုသုံးပါ, ပြီးနောက် protocol ကိုဖြည့်စွက်ရန်သို့မဟုတ်အခြားခွဲခြမ်းစိတ်ဖြာနည်းများကိုကျင့်သုံးရန်ဆုံးဖြတ်ပါ။

5 ။ အကျဉ်းချုပ်

Parse_url သည်အလွန်အဆင်ပြေသောကိရိယာတစ်ခုဖြစ်သည်။ အကယ်. input url သည်မပြည့်စုံပါကအထူးသဖြင့် protocol မရှိခြင်းသည်အိမ်ရှင်အားလမ်းကြောင်းအဖြစ်မှားယွင်းစွာဆက်ဆံလေ့ရှိသည်။ ဤပြ problem နာကိုဖြေရှင်းရန်သော့ချက်မှာ -

  • Input URL သည်ပြီးပြည့်စုံစွာပြည့်စုံပြီးအနည်းဆုံး protocol ပါဝင်သည်ကိုသေချာအောင်လုပ်ပါ။

  • အကယ်. ၎င်းကိုအာမခံချက်မရှိ, Preprocess နှင့် URL ကိုကြိုတင်ဖြည့်စွက်ပါက,

  • သီးခြားစီလမ်းကြောင်းသို့မဟုတ်စုံစမ်းမှု string ကိုဖြစ်စဉ်ကို။

၎င်းသည်ခွဲခြမ်းစိတ်ဖြာရလဒ်များသည်တိကျမှန်ကန်မှုရှိစေရန်နှင့်နောက်ဆက်တွဲအစီအစဉ်အမှားများကိုရှောင်ရှားရန်သေချာစေလိမ့်မည်။

ဤတွင်မပြည့်စုံသော URLs များကိုမည်သို့ကိုင်တွယ်ရမည်ကိုပြသသောရိုးရှင်းသောဥပမာကုဒ်ဖြစ်သည်။

 function safe_parse_url($url) {
    if (strpos($url, '://') === false) {
        $url = 'http://' . $url;
    }
    return parse_url($url);
}

$url_examples = [
    "/path/to/resource?foo=bar",
    "gitbox.net/index.php?x=1",
    "https://gitbox.net/api/data?param=value",
    "gitbox.net"
];

foreach ($url_examples as $url) {
    $result = safe_parse_url($url);
    print_r($result);
    echo "--------------------\n";
}

အထက်ပါနည်းလမ်းများမှတဆင့်မပြည့်စုံသော URL များကို parse_Url ၏ပြ army နာကိုဖော်ထုတ်နိုင်ပြီးပရိုဂရမ်သည်အားကောင်းနေသည်။