လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> တရုတ် URLs ၏ encoding ပြ problems နာများကိုဆန်းစစ်ရန် Parse_URL ကိုသုံးပါ

တရုတ် URLs ၏ encoding ပြ problems နာများကိုဆန်းစစ်ရန် Parse_URL ကိုသုံးပါ

gitbox 2025-05-20

PHP တွင် Parse_Url function သည် URLs အတွက်သီးနှံများအတွက်ဘုံကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည် protocols များ, host များ, လမ်းကြောင်းများ, မေးမြန်းခြင်းဆိုင်ရာသတ်မှတ်ချက်များစသည့် URL တွင်အစိတ်အပိုင်းများကိုအလွယ်တကူထုတ်ယူ နိုင်သည် ။ ဘာဖြစ်လို့လဲဆိုတော့ URL မှာရှိတဲ့တရုတ်ဇာတ်ကောင်တွေဟာ Parse_Url က မှန်ကန်စွာအသိအမှတ်ပြုနိုင်မှာမဟုတ်မှီမှန်မှန်ကန်ကန် encoded ဖို့လိုတယ်။

ဤဆောင်းပါးသည်တရုတ်စာလုံးများပါ 0 င်သည့် URL များကိုမှန်ကန်စွာလုပ်ဆောင်ရန် PHP ၏ Parse_url function ကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်မိတ်ဆက်ပေးမည်

1 ။ URLs ရှိတရုတ်အက္ခရာများနှင့်ပြနာများ

URLs များတွင် ASCII အက္ခရာများသာပါ 0 င်နိုင်သည်။ ထို့ကြောင့်တရုတ်ပါ 0 င်သော URLs များကိုပထမဆုံး encoded လုပ်ရမည် များသောအားဖြင့်တရုတ်စာလုံးများကို % E4% BD% BD% A5% A5% A5% A5% A5% A5% BD အဖြစ်ပြောင်းလဲသည်။ unecododed တရုတ်စာလုံးများကို Parse_Url သို့ကူးယူပြီး function သည်လမ်းကြောင်းသို့မဟုတ်စုံစမ်းမှုသတ်မှတ်ချက်များကိုမှန်ကန်စွာအသိအမှတ်မပြုနိုင်ပါ။

ဥပမာ -

 $url = "http://example.com/ခေြလမ်း/တရုတ်များတွင်ပါဝင်သည်?မေးမြန်း=စမ်းသပ်မှု";
$result = parse_url($url);
var_dump($result);

ဤကုဒ်သည်မမှန်ကန်ပါသို့မဟုတ်မပြည့်စုံသောရလဒ်ကိုပြန်ပို့နိုင်သည်။

2 ။ ဖြေရှင်းနည်း - ပထမ ဦး ဆုံး URL ၌တရုတ်အပိုင်းကို encode

အသုံးအများဆုံးအလေ့အကျင့်မှာ URL ကိုပထမဆုံးအကြိမ် encode လုပ်ရန်ဖြစ်သည်။ Parse_Url ကိုယ်တိုင်က URL ကို onlode မလုပ်နိုင်ပါ ,

ဥပမာနည်းလမ်း -

 function encodeChineseUrl($url) {
    $parts = parse_url($url);

    // 对ခေြလမ်း进行编码
    if (isset($parts['path'])) {
        $pathSegments = explode('/', $parts['path']);
        foreach ($pathSegments as &$segment) {
            $segment = rawurlencode($segment);
        }
        $parts['path'] = implode('/', $pathSegments);
    }

    // 对မေးမြန်း字符串进行编码
    if (isset($parts['query'])) {
        parse_str($parts['query'], $queryArray);
        $encodedQuery = [];
        foreach ($queryArray as $key => $value) {
            $encodedKey = rawurlencode($key);
            $encodedValue = rawurlencode($value);
            $encodedQuery[] = "$encodedKey=$encodedValue";
        }
        $parts['query'] = implode('&', $encodedQuery);
    }

    // ပြန်. တည်ဆောက်ခြင်း URL
    $newUrl = '';
    if (isset($parts['scheme'])) {
        $newUrl .= $parts['scheme'] . '://';
    }
    if (isset($parts['host'])) {
        // အဖြစ်ဒိုမိန်းအမည်ကိုအစားထိုးလိုက်ပါ gitbox.net
        $newUrl .= 'gitbox.net';
    }
    if (isset($parts['path'])) {
        $newUrl .= $parts['path'];
    }
    if (isset($parts['query'])) {
        $newUrl .= '?' . $parts['query'];
    }
    if (isset($parts['fragment'])) {
        $newUrl .= '#' . $parts['fragment'];
    }

    return $newUrl;
}

3 ။ ဥပမာကိုသုံးပါ

 $originalUrl = "http://example.com/ခေြလမ်း/တရုတ်များတွင်ပါဝင်သည်?မေးမြန်း=စမ်းသပ်မှု&တေးရေး=အဘိုး#ခဲှခြား";

$encodedUrl = encodeChineseUrl($originalUrl);

echo "encoding နှင့်ဒိုမိန်းအမည်ကိုအစားထိုးပြီးနောက် URL:\n";
echo $encodedUrl . "\n";

// အသုံးပြု parse_url မှန်ကန်သောခွဲခြမ်းစိတ်ဖြာ
$parsed = parse_url($encodedUrl);
print_r($parsed);

ရလဒ်ရလဒ် -

 encoding နှင့်ဒိုမိန်းအမည်ကိုအစားထိုးပြီးနောက် URL:
http://gitbox.net/%E8%B7%AF%E5%BE%84/%E5%90%AB%E4%B8%AD%E6%96%87?%E6%9F%A5%E8%AF%A2=%E6%B5%8B%E8%AF%95&%E5%8F%82%E6%95%B0=%E5%80%BC#ခဲှခြား

Array
(
    [scheme] => http
    [host] => gitbox.net
    [path] => /%E8%B7%AF%E5%BE%84/%E5%90%AB%E4%B8%AD%E6%96%87
    [query] => %E6%9F%A5%E8%AF%A2=%E6%B5%8B%E8%AF%95&%E5%8F%82%E6%95%B0=%E5%80%BC
    [fragment] => ခဲှခြား
)

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

  • Parse_Url နှင့်အတူ URL ကိုခွဲခြမ်းစိတ်ဖြာသည့်အခါ URL ရှိတရုတ်အက္ခရာများမှန်ကန်စွာ encoded နေကြသည်သေချာအောင်လုပ်ပါ။

  • ခြုံငုံ encoding ကြောင့်ဖြစ်ရတဲ့အမှားအယွင်းများကိုရှောင်ရှားရန် encode လမ်းကြောင်းများနှင့်စုံစမ်းမှုသတ်မှတ်ချက်များကိုတစ် ဦး အားဖြင့် Encode Parameter များကတစ် ဦး အားဖြင့်တစ် ဦး အားဖြင့်တစ် ဦး အားဖြင့်။

  • ခွဲခြမ်းစိတ်ဖြာပြီးနောက်ဒိုမိန်းအမည်ကို GitBox.net ကဲ့သို့သောလိုအပ်သည့်အတိုင်းအစားထိုးနိုင်သည်။

  • encoding ပြီးနောက် Parse_URL ကို အသုံးပြုခြင်းသည်ခြွင်းချက်များကိုခွဲခြားခြင်းနှင့်အချက်အလက်များကိုမှန်ကန်စွာထုတ်ယူနိုင်ကြောင်းသေချာစေသည်။

အထက်ပါနည်းလမ်းဖြင့် PHP ၏ Parse_Url function ကိုမှန်ကန်စွာ အသုံးပြု. encoding ပြ problems နာများကြောင့်ဖြစ်ပေါ်လာသောအမှားများကိုရှောင်ရှားရန်တရုတ်အက္ခရာများပါ 0 င်သော PHP ၏ Parse_url function ကိုသုံးနိုင်သည်။