လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> အထူးအက္ခရာများနှင့်ဆက်ဆံရာတွင်မှတ်သားရမည့်အရာများ

အထူးအက္ခရာများနှင့်ဆက်ဆံရာတွင်မှတ်သားရမည့်အရာများ

gitbox 2025-05-26

Parse_URL function ၏ syntax သည်အလွန်ရိုးရှင်းပါသည်။

 $url = "https://gitbox.net/path/to/page?name=Zhang San&age=25";
$parts = parse_url($url);
print_r($parts);

ရလဒ်ရလဒ် -

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

အထက်ပါဥပမာမှတွေ့မြင်နိုင်သည့်အတိုင်း Parse_URL သည် protocol, host, path and query string string ကိုအောင်မြင်စွာဆန်းစစ်နိုင်ခဲ့သည်။

2 ။ အထူးအက္ခရာများကြောင့်ဖြစ်ရတဲ့ခွဲခြမ်းစိတ်ဖြာပြ problems နာများ

အထူးအက္ခရာများတွင်တရုတ်, နေရာများ, # နိမိတ်လက္ခဏာများ, ရာခိုင်နှုန်း, ရာခိုင်နှုန်း) စသည်တို့ပါဝင်သည်။ ဤဇာတ်ကောင်များသည် URL တွင်ကွဲပြားသောအဓိပ္ပါယ်များရှိသည်။ URL ကိုတိုက်ရိုက်နေရာချသောအခါ Parse_URL သည် အမှားအယွင်းများကိုခွဲခြမ်းစိတ်ဖြာနိုင်သည်။

2.1 တရုတ်နှင့် Non-Ascii ဇာတ်ကောင်

URL တွင်တရုတ်သို့မဟုတ်အခြား apcii မဟုတ်သောဇာတ်ကောင်များပါ 0 င်ပါ က URL သည်ပထမ ဦး စွာ encoded သင့်သည်,

ဥပမာ -

 $url = "https://gitbox.net/search?query=မိုးလေဝသခန့်မှန်းချက်";
$parts = parse_url($url);
echo $parts['query'];  // ဒါဟာ garbled code သို့မဟုတ် parse အမှားများ output ကို output ကိုဖြစ်နိုင်သည်

မှန်ကန်သောနည်းလမ်းမှာ parameters တွေကိုပထမ ဦး စွာမေးမြန်းရန် Urlencode encoding ကိုအသုံးပြုရန်ဖြစ်သည်။

 $query = urlencode("မိုးလေဝသခန့်မှန်းချက်");
$url = "https://gitbox.net/search?query=$query";
$parts = parse_url($url);
echo $parts['query'];  // query=%E5%A4%A9%E6%B0%94%E9%A2%84%E6%8A%A5

2.2 နေရာများနှင့်အထူးသင်္ကေတများ

နေရာများကို % 20 သို့မဟုတ် + အဖြစ် URL တွင် encoded ရမည်။ အကယ်. သင့်တွင် URL တွင်တိုက်ရိုက်နေရာများပါ 0 င်ပါက Parse_URL သည် အာကာသအပြီးအကြောင်းအရာများကိုဖြတ်သန်းသွားနိုင်သည်။

ဥပမာ -

 $url = "https://gitbox.net/search?keyword=hello world";
$parts = parse_url($url);
print_r($parts);

ယခုအချိန်တွင် Parse_Url သည် URL သည် သော့ချက်စာလုံးကို သာရောက်သည်ဟုထင်လိမ့်မည် ပြောင်းလဲသင့်သည် -

 $url = "https://gitbox.net/search?keyword=hello%20world";
$parts = parse_url($url);
print_r($parts);

2.3 ပေါင်နိမိတ်လက္ခဏာများကိုကိုင်တွယ်ခြင်း (#)

# URL တွင်သီးခြားစီ ခွဲခြမ်းစိတ်ဖြာ မည့် URL တွင်အပိုင်းအစများ (အပိုင်းအစ) ကိုကိုယ်စားပြုရန်အသုံးပြုသည်။ # URL တွင်တိုက်ရိုက် encoded မထားပါကနောက်ဆက်တွဲအကြောင်းအရာများကိုခွဲခြမ်းစိတ်ဖြာခြင်းရလဒ်ကိုအကျိုးသက်ရောက်နိုင်သည့်အပိုင်းအစများကိုအပိုင်းအစများထည့်သွင်းစဉ်းစားလိမ့်မည်။

ဥပမာ -

 $url = "https://gitbox.net/page?name=abc#section2";
$parts = parse_url($url);
print_r($parts);

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

 Array
(
    [scheme] => https
    [host] => gitbox.net
    [path] => /page
    [query] => name=abc
    [fragment] => section2
)

အကယ်. # သည် parameter တန်ဖိုး၏အစိတ်အပိုင်းတစ်ခုဖြစ်ပါက % 23 အဖြစ် encoded ရမည်။

2.4 နှစ်ဆ encoding ရာခိုင်နှုန်းရာခိုင်နှုန်း sign (%)

အကယ်. URL တွင်ရာခိုင်နှုန်းထည့်ထားပြီးပါက Parse_URL ကို အလိုအလျောက်ဖယ်ရှားပစ်မည်မဟုတ်ပါ။ အထူးသဖြင့် encoding မပြည့်စုံပါကဥပမာအားဖြင့် % 2 သည် နောက်ဆုံးနည်းနည်းမျှမရှိလျှင် Parse_URL သည် အမှားတစ်ခုသတင်းပို့လိမ့်မည်။

အဖြေမှာရာခိုင်နှုန်းသောကုဒ်များအားလုံးသည်ပြည့်စုံပြီးတရားဝင်ဖြစ်ကြောင်းသို့မဟုတ် URL ကိုအရင်စစ်ဆေးရန်သေချာစေရန်ဖြစ်သည်။

3 ။ မကြာခဏမေးခွန်းများမေးသောမေးခွန်းများနှင့် debugging အကြံပြုချက်များ

  • မေးခွန်း 1 - Parse_Url သည်မှားယွင်းသောသို့မဟုတ်မပြည့်စုံသောရလဒ်များရရှိခဲ့သည် ဖြစ်နိုင်ချေရှိသောအကြောင်းပြချက်မှာ URL အမျိုးအစားသည်တရားမ 0 င်သို့မဟုတ်တရားမဝင်သောဇာတ်ကောင်များပါ 0 င်သည်။ Filter_Var ($ URL, filter_valka_URL) ကို အရင်စစ်ဆေးရန်အတွက်အသုံးပြုရန်အကြံပြုသည်။

  • မေးခွန်း 2 - မကိုမာသော encoding encoding encoding စုံစမ်းမှု parameter parsing အတွက်ရှုပ်ထွေးမှုများ အထူးအက္ခရာများအားလုံးသည်မှန်ကန်စွာ encoded, အထူးသဖြင့် strings and parts အစိတ်အပိုင်းများကိုသေချာစွာစစ်ဆေးပါ။

  • မေးခွန်း 3. ခွဲခြမ်းစိတ်ဖြာရလဒ်ပါစုံစမ်းမှုအပိုင်းသည်အဓိကတန်ဖိုးအတွဲများထဲသို့မခွဲပါ
    Parse_url သည် URL ဖွဲ့စည်းပုံကိုခွဲထုတ်ရန်အတွက်သာတာဝန်ရှိသည်။ ၎င်းကို parse_str လုပ်ဆောင်မှုနှင့်ပေါင်းစပ်နိုင်သည်။

 parse_str($parts['query'], $queryParams);
print_r($queryParams);

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

  • Parse_Url ကို အသုံးမပြုခင် URL string သည်တရားဝင်ဖြစ်ပြီးအထူးအက္ခရာများမှန်ကန်စွာ encoded ဖြစ်သည်။

  • တရုတ်နှင့် ASCII ဇာတ်ကောင်များသည် urlencode ဖြစ်ရမည်။

  • နေရာများကဲ့သို့သောအထူးသင်္ကေတများ, # %, % အထူးဂရုပြုရန်အထူးဂရုပြုရန်လိုအပ်သည်။

  • စုံစမ်းမှုဆိုင်ရာသတ်မှတ်ချက်များအတွက် Parse_Strtrart ကို ထပ်မံခွဲခြမ်းစိတ်ဖြာရန်အသုံးပြုနိုင်သည်။

  • ခွဲခြမ်းစိတ်ဖြာခြင်းကိုကြုံတွေ့ရသောအခါ URL format ကိုအရင်စစ်ဆေးပြီး encoding ပြ problem နာကို debug လုပ်ပါ။

အထက်ပါကြိုတင်ကာကွယ်မှုများပြုလုပ်ရာတွင်ရှုပ်ထွေးသောသို့မဟုတ်အထူးအက္ခရာများကိုကိုင်တွယ်ရန် Parse_URL ကို ပိုမိုသက်သာစေနိုင်သည်။

နမူနာကုဒ်အကျဉ်းချုပ်

 $url = "https://gitbox.net/search?query=" . urlencode("မိုးလေဝသခန့်မှန်းချက်#1");
$parts = parse_url($url);
print_r($parts);

if (isset($parts['query'])) {
    parse_str($parts['query'], $queryParams);
    print_r($queryParams);
}

ဤကုဒ်သည်တရုတ်နှင့် # ဇာတ်ကောင်များနှင့် # ဇာတ်ကောင်များနှင့်စုံစမ်းမှုဆိုင်ရာသတ်မှတ်ချက်များ၏ခွဲခြမ်းစိတ်ဖြာမှုကိုပြသသည်။