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

ဆွေမျိုးလမ်းကြောင်းများကိုမဖော်ပြနိုင်သော Parse_url ကိုမည်သို့ကိုင်တွယ်ရမည်နည်း

gitbox 2025-05-27

နေ့စဉ် 0 ဘ်ဆိုဒ်ဖွံ့ဖြိုးတိုးတက်မှုအတွက် PHP ကိုအသုံးပြုသောအခါ Parse_Url () သည် URLs ကိုခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်အစိတ်အပိုင်းများကိုရယူရန်အလွန်အသုံးများသောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ သို့သော် developer များစွာသည်ဤလုပ်ဆောင်မှုကို "လမ်းကြောင်းမှန်များ" ဖြစ်ရန်ဤလုပ်ဆောင်မှုကိုအသုံးပြုသောအခါမမျှော်လင့်သောရလဒ်များနှင့်ကြုံတွေ့ရလိမ့်မည်။ တကယ်တော့ပြ problem နာက Parse_Url () သူ့ဟာသူမဟုတ်ပေမယ့်ကျွန်တော်တို့ရဲ့အသုံးပြုမှုမြင်ကွင်းနှင့်ပတ်သက်။ နားလည်မှုလွဲမှားခြင်းရှိသည်။

ဤဆောင်းပါးသည်သင့်အား Parse_Url () ၏အပြုအမူကိုနက်နက်နဲနဲနားလည်ရန်သင့်အားနားလည်စေလိမ့်မည်။

1 ။ ပြ problem နာနောက်ခံ

Parse_url ၏တရားဝင်ဖော်ပြချက်သည်ဤလုပ်ဆောင်ချက်၏ parametersters သည်တရားဝင် URL ဖြစ်သင့်ကြောင်းရှင်းလင်းစွာဖော်ပြထားသည်။ ဆိုလိုသည်မှာ၎င်းသည် အကြွင်းမဲ့အာဏာ URLs များကို ခွဲခြမ်းစိတ်ဖြာခြင်းအတွက်ပိုမိုသင့်တော်သည်။ အကယ်. သင်သည်ဆွေမျိုးလမ်းကြောင်းကိုဖြတ်သန်းပါကရလဒ်သည်သင်မျှော်လင့်ထားသည့်အရာမဟုတ်ပါ။

ဥပမာတစ်ခုကိုကြည့်ရအောင်။

 $url = "/path/to/resource?foo=bar#section";
var_dump(parse_url($url));

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

 array(1) {
  ["path"]=>
  string(19) "/path/to/resource?foo=bar#section"
}

Parse_Url () မကွဲနိုင်ကြောင်းသင်တွေ့လိမ့်မည် ။ foo = bar နှင့် #section ဖြစ်သော်လည်း string တစ်ခုလုံးကိုလမ်းကြောင်းအဖြစ်ရှုမြင်သည်။ အကြောင်းပြချက်မှာအဝင်သည်ဆွေမျိုးလမ်းကြောင်းဖြစ်သည်

2 ။ ဆွေမျိုးလမ်းကြောင်းများနှင့်ကိုင်တွယ်ရန်မှန်ကန်သောနည်းလမ်း

အကယ်. သင်သည် query string ကို (သို့) အပိုင်းအစတစ်ခုကိုဆန်းပြားသောလမ်းကြောင်းတစ်ခုတွင်ခွဲခြမ်းစိတ်ဖြာရန်လိုအပ်ပါကအလွယ်တကူ unsute URL သို့ပြောင်းရန်ဖြစ်သည်။ ၎င်းကို virtual protocol နှင့် host name ကို splicting လုပ်ခြင်းဖြင့်အကောင်အထည်ဖော်နိုင်သည်။

 $relativeUrl = "/path/to/resource?foo=bar#section";
$absoluteUrl = "http://gitbox.net" . $relativeUrl;
$parts = parse_url($absoluteUrl);

// အတုဖယ်ရှားလိုက်ပါ scheme နှင့် host
unset($parts['scheme'], $parts['host']);

var_dump($parts);

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

 array(3) {
  ["path"]=>
  string(17) "/path/to/resource"
  ["query"]=>
  string(7) "foo=bar"
  ["fragment"]=>
  string(7) "section"
}

ဤနည်းဖြင့်ကျွန်ုပ်တို့လိုချင်သောရလဒ်များကိုရနိုင်သည်။

3 ။ နောက်ထပ်အပြောင်းအလဲနဲ့လုပ်ဆောင်ချက်များကို encapsulate

အကယ်. သင်သည်ဤကဲ့သို့သောမြင်ကွင်းမျိုးကိုမကြာခဏကြုံတွေ့ရပါက,

 function parse_relative_url($url) {
    // သို့ဆိုလျှင် / စတင်ရန်လမ်းကြောင်း,ပေါင်းထည့်ရန်ဒိုမိန်းအမည်ကို forge
    if (strpos($url, '/') === 0) {
        $url = 'http://gitbox.net' . $url;
        $parts = parse_url($url);
        unset($parts['scheme'], $parts['host']);
        return $parts;
    }

    // ဒါကြောင့်အခြား format ပဲဆိုပါက,သင်သည်ခွဲခြမ်းစိတ်ဖြာခြင်းသို့မဟုတ်ခြွင်းချက်တစ်ခုပစ်ရန်သင့်ကိုရွေးချယ်နိုင်သည်
    throw new InvalidArgumentException("Only relative paths starting with '/' are supported.");
}

ခေါ်ဆိုမှုဥပမာ -

 $info = parse_relative_url('/test/path?x=1#top');
print_r($info);

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

 Array
(
    [path] => /test/path
    [query] => x=1
    [fragment] => top
)

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

Parse_url () အကြွင်းမဲ့အာဏာ URLs ကိုခွဲခြမ်းစိတ်ဖြာသောအခါအလွန်စိတ်ချရသော်လည်းဆွေမျိုးလမ်းကြောင်းများနှင့်ရင်ဆိုင်ရသောအခါစွမ်းဆောင်ရည်အကန့်အသတ်ရှိသည်။ ဒိုမိန်းအတုအတုကိုယာယီခွဲထုတ်ခြင်းအားဖြင့်သင်သည်ဤကန့်သတ်ချက်ကိုကျော်လွှားနိုင်ပြီး,

၎င်းသည် hack မဟုတ်ဘဲ function design ၏နယ်နိမိတ်ကိုကျိုးကြောင်းဆီလျော်သောတုန့်ပြန်မှုမဟုတ်ပါ။ ကိရိယာများ၏နယ်နိမိတ်ကိုနားလည်ခြင်းသည်ကိရိယာများတွင် bug များရှိ, ဒီဆောင်းပါးကမင်းကိုထောင်ချောက်နည်းလာအောင်ကူညီနိုင်မယ်လို့မျှော်လင့်ပါတယ်။