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

URL တွင်မေးခွန်းအမှတ်အသားများကိုကြုံတွေ့ရသောအခါ Parse_URL ကိုမည်သို့ကိုင်တွယ်ရမည်နည်း။

gitbox 2025-05-26

PHP ကို ​​URL များကို အသုံးပြု. Parse_URL သည်အလွန်အသုံးများသောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ ၎င်းသည် protocol (Scheme), Pather (Pather), Query Parameters (query) စသည်ဖြင့် URL ကိုကွဲပြားခြားနားသောအစိတ်အပိုင်းများသို့ပြိုကွဲပျက်စီးစေနိုင်သည်။ သို့သော်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည်အထူးအခြေအနေတစ်ခုကြုံတွေ့ရနိုင်သည် ဤအချိန်တွင် Parse_URL သည် ပုံမှန်အလုပ်များနိုင်ပါသလား။ ဤဆောင်းပါးသည်ဤပြ issue နာကိုအသေးစိတ်သုံးသပ်ကြည့်ပါမည်။

1 ။ Parse_url ၏အခြေခံအသုံးပြုမှု

Parse_URL ၏အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 $url = "https://gitbox.net/path/to/page?name=foo&age=20";
$parsed = parse_url($url);
print_r($parsed);

output ရလဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -

 Array
(
    [scheme] => https
    [host] => gitbox.net
    [path] => /path/to/page
    [query] => name=foo&age=20
)

ဤဥပမာ မှနေ. Parse_Url သည် URL ၏အစိတ်အပိုင်းများကိုတိကျစွာခွဲခြမ်းစိတ်ဖြာနိုင်ကြောင်းကျွန်ုပ်တို့တွေ့မြင်နိုင်သည်။ URL တွင်မေးခွန်းအမှတ်အသားများရှိလျှင်ကော။

2 ။ URL တွင်မေးခွန်းအမှတ်အသားများတွင်ပါ 0 င်သည့်အခါဘာဖြစ်မည်နည်း။

Standard URL သတ်မှတ်ချက်တွင်မေးခွန်းအမှတ်အသားတစ်ခုတည်းကိုသာလမ်းကြောင်းနှင့် query strings များသို့ URL တွင်အသုံးပြုနိုင်သည်။ ဥပမာအားဖြင့်:

 https://gitbox.net/page?first=1&second=2

သို့သော်အမှန်တကယ်တွင်၎င်းသည်အမြဲတမ်း "စည်းမျဉ်းစည်းကမ်းတွေ" မဟုတ်ပါ။ တခါတရံတွင်ကျွန်ုပ်တို့သည် "စံမဟုတ်သော" URLs အချို့ကိုတွေ့ရသည်။

 https://gitbox.net/page??id=123?name=jack

Parse_Url သည် ဤ URL အမျိုးအစားကိုမည်သို့ခွဲထုတ်မည်ကိုကြည့်ကြပါစို့။

 $url = "https://gitbox.net/page??id=123?name=jack";
$parsed = parse_url($url);
print_r($parsed);

ရလဒ်ရလဒ် -

 Array
(
    [scheme] => https
    [host] => gitbox.net
    [path] => /page
    [query] => ?id=123?name=jack
)

သင်မြင်နိုင်သည့်အတိုင်း Parse_URL သည် မေးခွန်းအမှတ်အသားများနှင့်ကြုံတွေ့ရသောအခါအမှားတစ်ခုပြုလုပ်လိမ့်မည်မဟုတ်ပါ။ တစ်နည်းပြောရလျှင်၎င်းသည်ပထမမေးခွန်းအမှတ်အသားကိုသာအသိအမှတ်ပြုပြီးနောက်ဆက်တွဲမေးခွန်းအမှတ်အသားများကိုသာမန်အက္ခရာများအဖြစ်သတ်မှတ်ပြီး စုံစမ်းမှု အပိုင်းတွင်ထိန်းသိမ်းထားလိမ့်မည်။

3 ။ developer များအပေါ်အဘယ်သို့ဆိုလိုသနည်း

ဆိုလိုသည်မှာသင်သည် Parse_Url ကို အသုံးပြုသူများသို့မဟုတ်တတိယပါတီများမှ URL input များကို အသုံးပြု. URL အဆောက်အအုံများသည် (မေးခွန်းအမှတ်အသားများအပါအ 0 င်) စံသတ်မှတ်ချက်မဟုတ်ဟုဆိုလိုသည်။ Parse_Url အမှားတစ်ခုသတင်းပို့ခြင်းမဟုတ်ပေမယ့်၎င်း၏ output ကိုသင်၏မျှော်လင့်ချက်များနှင့်မကိုက်ညီပါလိမ့်မည်။

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

 $url = "https://gitbox.net/path??sort=asc?filter=active";
$parsed = parse_url($url);
echo $parsed['query']; // ထုတ်လုပ်ခြင်း: ?sort=asc?filter=active

အကယ်. သင်သည် Parse_Str_Str query query ကိုလာမည့် quertion သို့လာပါက၎င်းသည်သင်လိုချင်သောသော့ချက်အတွဲများကိုမခွဲနိုင်ကြောင်းသင်တွေ့ရှိလိမ့်မည်။

4 ။ လက်မှတ်ရေးထိုးခြင်းကိုဖြေရှင်းခြင်း

အကယ်. သင်သည်မမှန်မဟုတ်သော URL များကိုကိုင်တွယ်ရန်မျှော်လင့်ပါကအောက်ပါနည်းလမ်းများကိုသင်စဉ်းစားနိုင်သည်။

  1. Preprocessing URL - "URL ကိုပုံမှန်အသုံးအနှုန်းတွေ (သို့) string string တွေကိုကြိုတင်ပြင်ဆင်ထားပြီး, မလိုအပ်တဲ့မေးခွန်းအမှတ်အသားများကိုကြိုတင်ပြင်ဆင်ပါ။

     $url = preg_replace('/\?{2,}/', '?', $url);
    
  2. ကိုယ်တိုင်ရှာဖွေမေးမြန်းမှုအပိုင်း - ပထမမေးခွန်းကိုရှာဖွေရန် Stropos ကို သုံးပါ, လမ်းကြောင်းနှင့်စုံစမ်းမှု string ကိုကိုယ်တိုင်ခွဲခြားပါ,

  3. Query parameters တွေကိုရဖို့ Parse_URL ကိုအားမကိုးပါနဲ့ ပြီးတော့ parse_str ကို သုံးပါ။

     $queryPart = substr($url, strpos($url, '?') + 1);
    parse_str($queryPart, $params);
    

V. နိဂုံးချုပ်

Parse_Url သည်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ အထူးသဖြင့်မေးခွန်းအမှတ်အသားများပါ 0 င်သည့် "စံမဟုတ်သော" URLs အချို့နှင့်ရင်ဆိုင်ရသောအခါ၎င်းတို့၏အပြုအမူကို developer များကရှင်းလင်းစွာနားလည်ရန်လိုအပ်သည်။ အဓိကသော့ချက်မှာ - Parse_Url သည် ပထမမေးခွန်းများကိုသာအသိအမှတ်ပြုသည်။ ကျန်များကို စုံစမ်းမှု သို့ခွဲခြားထားပြီး, စုံစမ်းမှုအစိတ်အပိုင်းများကိုအလိုအလျောက်ခွဲခြားမည်မဟုတ်ပါ။ ထို့ကြောင့်ဒေတာအရင်းအမြစ်ကိုမထိန်းချုပ်နိုင်သည့်အခါကျွန်ုပ်တို့သည် URL ကိုမှားယွင်းစွာအဓိပ္ပါယ်ဖွင့်ဆိုခြင်းကြောင့်ဖြစ်ပေါ်လာခြင်းကိုရှောင်ရှားရန် Preprocess လုပ်ရမည်။