လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Parse_URL နှင့် urlencode နှင့်အတူ encoding processing processing

Parse_URL နှင့် urlencode နှင့်အတူ encoding processing processing

gitbox 2025-05-26

နေ့စဉ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် developer များသည်တရုတ် parameters များကိုပါ 0 င်သည့် URL များကိုမကြာခဏလုပ်ဆောင်ရန်လိုအပ်သည်။ တရုတ်အက္ခရာများကို URL တွင်တိုက်ရိုက်မသုံးနိုင်ပါက၎င်းတို့သည် encoded လုပ်ရမည်, သို့မဟုတ်ပါကအမှားအယွင်းများကိုခွဲခြမ်းစိတ်ဖြာခြင်းသို့မဟုတ်ပျက်ကွက်မှုများဖြစ်ပေါ်စေနိုင်သည်။ PHP သည် URL နှင့်သက်ဆိုင်သောလုပ်ငန်းများကို Parse_URL ကို URLs ကိုခွဲခြမ်းစိတ်ဖြာရန်အသုံးပြုသည်။ ဒီလုပ်ဆောင်ချက်နှစ်ခုကိုဘယ်လိုမှန်ကန်စွာပေါင်းစပ်နိုင်မလဲဆိုတာတရုတ် parameters တွေကိုပြုပြင်ဖို့သော့ချက်ဖြစ်လာတယ်။

ဤဆောင်းပါးသည်တရုတ် parameters များပါ 0 င်သည့် URL များကိုမှန်ကန်စွာလုပ်ဆောင်ရန် Parse_URL နှင့် URLENDODE ကို မည်သို့အသုံးပြုရမည်ကိုရှင်းပြရန်ဥပမာတစ်ခုကိုအသုံးပြုလိမ့်မည်။

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

ငါတို့မှာ URL ရှိတယ်ဆိုပါစို့။

 https://gitbox.net/search?q=စမ်းသပ်မှု&lang=zh

ဤ URL မှစုံစမ်းမှုဆိုင်ရာသတ်မှတ်ချက်များသည်တရုတ် "စမ်းသပ်မှု" တွင်ပါ 0 င်သည်။ အကယ်. ကျွန်ုပ်တို့သည်ဤ URL ကို interfaces သို့တိုက်ရိုက်သွားလျှင်, URLENDED ကို URLENDED ကိုအသုံးပြုပါက colons, slashes, မေးခွန်းအမှတ်အသားများစသည့်ဖွဲ့စည်းတည်ဆောက်ပုံဆိုင်ရာရှုပ်ထွေးမှုများကိုဖြစ်ပေါ်စေပြီး၎င်းသည်မှားယွင်းစွာ encoded ဖြစ်သည်။

ဒါကြောင့် URL တစ်ခုလုံးကိုမဟုတ်ဘဲ "value" ကိုအတိအကျ encode လုပ်ဖို့လိုတယ်။

2 ။ URLs ကိုပြိုကွဲရန် Parse_URL ကိုသုံးပါ

ပထမ ဦး စွာကျွန်ုပ်တို့သည် Parse_url ကို URL ၏အစိတ်အပိုင်းများကိုပြိုကွဲစေသည်။

 $url = 'https://gitbox.net/search?q=စမ်းသပ်မှု&lang=zh';
$parsed = parse_url($url);

print_r($parsed);

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

 Array
(
    [scheme] => https
    [host] => gitbox.net
    [path] => /search
    [query] => q=စမ်းသပ်မှု&lang=zh
)

ဤ parsing ရလဒ်မှတစ်ဆင့်ကျွန်ုပ်တို့သည်မူရင်း မေးမြန်းချက် string ကိုရနိုင်သည်။

3 ။ စုံစမ်းမှုသတ်မှတ်ချက်များကိုထုတ်ယူခြင်းနှင့်လုပ်ငန်းစဉ်ကိုထုတ်ယူပါ

ကျွန်ုပ်တို့သည် query အပိုင်းကို queriative array သို့ပြောင်းရန် Parse_Str ကို သုံးနိုင်သည်။ ထို့နောက်တန်ဖိုးကို encode လုပ်နိုင်သည်။

 parse_str($parsed['query'], $queryParams);

foreach ($queryParams as $key => $value) {
    $queryParams[$key] = urlencode($value);
}

ယခု $ iderparams ရှိတန်ဖိုးတစ်ခုစီသည် URL Secure format ဖြင့်မှန်ကန်စွာ encoded ဖြစ်သည်။

ထို့နောက်ကျွန်ုပ်တို့သည်ဤသတ်မှတ်ချက်များကိုစုံစမ်းမှု string တစ်ခုထဲသို့ပြန်လည်ထူထောင်ရန်လိုအပ်သည်။

 $encodedQuery = http_build_query($queryParams);

၎င်းသည်အောက်ပါ string ကိုထုတ်ပေးသည်။

 q=%E6%B5%8B%E8%AF%95&lang=zh

မှတ်ချက်။ ။ တန်ဖိုးကို http_build_query ကို encoding လုပ်သည့်အခါ, ပုံမှန်အားဖြင့်အာကာသကိုအပေါင်းသင်္ကေတ ( + ) သို့ပြောင်းသည်။ အကယ်. သင်နေရာကို % 20 ဖြင့်ကိုယ်စားပြုလိုပါကဒုတိယ parameter ကိုထည့်နိုင်သည်။

 $encodedQuery = http_build_query($queryParams, '', '&', PHP_QUERY_RFC3986);

4 ။ ပြီးပြည့်စုံသော URL ကို splice

နောက်ဆုံးအနေဖြင့်ကျွန်ုပ်တို့သည်ပြုပြင်ထားသောအစိတ်အပိုင်းများကိုအပြည့်အဝ URL သို့ပြန်လည်ထူထောင်နိုင်သည်။

 $finalUrl = $parsed['scheme'] . '://' . $parsed['host'] . $parsed['path'] . '?' . $encodedQuery;

echo $finalUrl;

output ရလဒ် -

 https://gitbox.net/search?q=%E6%B5%8B%E8%AF%95&lang=zh

ယခု URL မှတရုတ် parameters များကိုယခုအချိန်တွင်လုံလုံခြုံခြုံ encoded လုပ်ပြီးမည်သည့် browser သို့မဟုတ် http တောင်းဆိုမှုကိုစာကြည့်တိုက်အတွက်သင့်တော်သည်။

5 ။ လုပ်ဆောင်ချက်များကိုသို့ encapsulated

ပြန်လည်အသုံးပြုခြင်းအတွက်အထက်ပါယုတ္တိဗေဒကို function တစ်ခုထဲသို့ encapsulated လုပ်နိုင်သည်။

 function encodeUrlQuery($url) {
    $parsed = parse_url($url);
    if (!isset($parsed['query'])) {
        return $url;
    }

    parse_str($parsed['query'], $queryParams);

    foreach ($queryParams as $key => $value) {
        $queryParams[$key] = urlencode($value);
    }

    $encodedQuery = http_build_query($queryParams, '', '&', PHP_QUERY_RFC3986);

    $result = $parsed['scheme'] . '://' . $parsed['host'];
    if (isset($parsed['path'])) {
        $result .= $parsed['path'];
    }
    $result .= '?' . $encodedQuery;

    return $result;
}

မည်သို့အသုံးပြုရမည်နည်း

 $url = 'https://gitbox.net/search?q=စမ်းသပ်မှု&lang=zh';
echo encodeUrlQuery($url);

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

 https://gitbox.net/search?q=%E6%B5%8B%E8%AF%95&lang=zh

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

PHP ရှိတရုတ် parameters များကိုပါ 0 င်သည့် URLs များပြုလုပ်သောအခါ URLendo ကို URL တစ်ခုလုံးအတွက်တိုက်ရိုက်မသုံးနိုင်ပါ,

  1. URL ကိုဆွဲရန် Parse_url ကို သုံးပါ။

  2. query အပိုင်းကိုခွဲခြားရန် Parse_Str ကို သုံးပါ။

  3. တစ်ခုချင်းစီကို parameter တန်ဖိုးအတွက် urlocode encoding ကိုသုံးပါ။

  4. http_build_query ကို သုံး. Query ကိုပြန်လည်တည်ဆောက်ခြင်း,

  5. ပြီးပြည့်စုံသော URL သို့ spliced ​​။

ဤနည်းလမ်းသည် URL ဖွဲ့စည်းပုံကိုဆက်လက်ထိန်းသိမ်းထားရုံသာမကဘဲတရုတ်အက္ခရာများကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများကိုရှောင်ရှားခြင်းမှရှောင်ရှားခြင်း,