PHP ကို URL များကို အသုံးပြု. Parse_URL သည်အလွန်အသုံးများသောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ ၎င်းသည် protocol (Scheme), Pather (Pather), Query Parameters (query) စသည်ဖြင့် URL ကိုကွဲပြားခြားနားသောအစိတ်အပိုင်းများသို့ပြိုကွဲပျက်စီးစေနိုင်သည်။ သို့သော်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည်အထူးအခြေအနေတစ်ခုကြုံတွေ့ရနိုင်သည် ။ ဤအချိန်တွင် Parse_URL သည် ပုံမှန်အလုပ်များနိုင်ပါသလား။ ဤဆောင်းပါးသည်ဤပြ issue နာကိုအသေးစိတ်သုံးသပ်ကြည့်ပါမည်။
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 တွင်မေးခွန်းအမှတ်အသားများရှိလျှင်ကော။
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 သည် မေးခွန်းအမှတ်အသားများနှင့်ကြုံတွေ့ရသောအခါအမှားတစ်ခုပြုလုပ်လိမ့်မည်မဟုတ်ပါ။ တစ်နည်းပြောရလျှင်၎င်းသည်ပထမမေးခွန်းအမှတ်အသားကိုသာအသိအမှတ်ပြုပြီးနောက်ဆက်တွဲမေးခွန်းအမှတ်အသားများကိုသာမန်အက္ခရာများအဖြစ်သတ်မှတ်ပြီး စုံစမ်းမှု အပိုင်းတွင်ထိန်းသိမ်းထားလိမ့်မည်။
ဆိုလိုသည်မှာသင်သည် 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 သို့လာပါက၎င်းသည်သင်လိုချင်သောသော့ချက်အတွဲများကိုမခွဲနိုင်ကြောင်းသင်တွေ့ရှိလိမ့်မည်။
အကယ်. သင်သည်မမှန်မဟုတ်သော URL များကိုကိုင်တွယ်ရန်မျှော်လင့်ပါကအောက်ပါနည်းလမ်းများကိုသင်စဉ်းစားနိုင်သည်။
Preprocessing URL - "URL ကိုပုံမှန်အသုံးအနှုန်းတွေ (သို့) string string တွေကိုကြိုတင်ပြင်ဆင်ထားပြီး, မလိုအပ်တဲ့မေးခွန်းအမှတ်အသားများကိုကြိုတင်ပြင်ဆင်ပါ။
$url = preg_replace('/\?{2,}/', '?', $url);
ကိုယ်တိုင်ရှာဖွေမေးမြန်းမှုအပိုင်း - ပထမမေးခွန်းကိုရှာဖွေရန် Stropos ကို သုံးပါ, လမ်းကြောင်းနှင့်စုံစမ်းမှု string ကိုကိုယ်တိုင်ခွဲခြားပါ,
Query parameters တွေကိုရဖို့ Parse_URL ကိုအားမကိုးပါနဲ့ ။ ပြီးတော့ parse_str ကို သုံးပါ။
$queryPart = substr($url, strpos($url, '?') + 1);
parse_str($queryPart, $params);
Parse_Url သည်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ အထူးသဖြင့်မေးခွန်းအမှတ်အသားများပါ 0 င်သည့် "စံမဟုတ်သော" URLs အချို့နှင့်ရင်ဆိုင်ရသောအခါ၎င်းတို့၏အပြုအမူကို developer များကရှင်းလင်းစွာနားလည်ရန်လိုအပ်သည်။ အဓိကသော့ချက်မှာ - Parse_Url သည် ပထမမေးခွန်းများကိုသာအသိအမှတ်ပြုသည်။ ကျန်များကို စုံစမ်းမှု သို့ခွဲခြားထားပြီး, စုံစမ်းမှုအစိတ်အပိုင်းများကိုအလိုအလျောက်ခွဲခြားမည်မဟုတ်ပါ။ ထို့ကြောင့်ဒေတာအရင်းအမြစ်ကိုမထိန်းချုပ်နိုင်သည့်အခါကျွန်ုပ်တို့သည် URL ကိုမှားယွင်းစွာအဓိပ္ပါယ်ဖွင့်ဆိုခြင်းကြောင့်ဖြစ်ပေါ်လာခြင်းကိုရှောင်ရှားရန် Preprocess လုပ်ရမည်။