နေ့စဉ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် developer များသည်တရုတ် parameters များကိုပါ 0 င်သည့် URL များကိုမကြာခဏလုပ်ဆောင်ရန်လိုအပ်သည်။ တရုတ်အက္ခရာများကို URL တွင်တိုက်ရိုက်မသုံးနိုင်ပါက၎င်းတို့သည် encoded လုပ်ရမည်, သို့မဟုတ်ပါကအမှားအယွင်းများကိုခွဲခြမ်းစိတ်ဖြာခြင်းသို့မဟုတ်ပျက်ကွက်မှုများဖြစ်ပေါ်စေနိုင်သည်။ PHP သည် URL နှင့်သက်ဆိုင်သောလုပ်ငန်းများကို Parse_URL ကို URLs ကိုခွဲခြမ်းစိတ်ဖြာရန်အသုံးပြုသည်။ ဒီလုပ်ဆောင်ချက်နှစ်ခုကိုဘယ်လိုမှန်ကန်စွာပေါင်းစပ်နိုင်မလဲဆိုတာတရုတ် parameters တွေကိုပြုပြင်ဖို့သော့ချက်ဖြစ်လာတယ်။
ဤဆောင်းပါးသည်တရုတ် parameters များပါ 0 င်သည့် URL များကိုမှန်ကန်စွာလုပ်ဆောင်ရန် Parse_URL နှင့် URLENDODE ကို မည်သို့အသုံးပြုရမည်ကိုရှင်းပြရန်ဥပမာတစ်ခုကိုအသုံးပြုလိမ့်မည်။
ငါတို့မှာ URL ရှိတယ်ဆိုပါစို့။
https://gitbox.net/search?q=စမ်းသပ်မှု&lang=zh
ဤ URL မှစုံစမ်းမှုဆိုင်ရာသတ်မှတ်ချက်များသည်တရုတ် "စမ်းသပ်မှု" တွင်ပါ 0 င်သည်။ အကယ်. ကျွန်ုပ်တို့သည်ဤ URL ကို interfaces သို့တိုက်ရိုက်သွားလျှင်, URLENDED ကို URLENDED ကိုအသုံးပြုပါက colons, slashes, မေးခွန်းအမှတ်အသားများစသည့်ဖွဲ့စည်းတည်ဆောက်ပုံဆိုင်ရာရှုပ်ထွေးမှုများကိုဖြစ်ပေါ်စေပြီး၎င်းသည်မှားယွင်းစွာ encoded ဖြစ်သည်။
ဒါကြောင့် URL တစ်ခုလုံးကိုမဟုတ်ဘဲ "value" ကိုအတိအကျ encode လုပ်ဖို့လိုတယ်။
ပထမ ဦး စွာကျွန်ုပ်တို့သည် 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 ကိုရနိုင်သည်။
ကျွန်ုပ်တို့သည် 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);
နောက်ဆုံးအနေဖြင့်ကျွန်ုပ်တို့သည်ပြုပြင်ထားသောအစိတ်အပိုင်းများကိုအပြည့်အဝ 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 တောင်းဆိုမှုကိုစာကြည့်တိုက်အတွက်သင့်တော်သည်။
ပြန်လည်အသုံးပြုခြင်းအတွက်အထက်ပါယုတ္တိဗေဒကို 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
PHP ရှိတရုတ် parameters များကိုပါ 0 င်သည့် URLs များပြုလုပ်သောအခါ URLendo ကို URL တစ်ခုလုံးအတွက်တိုက်ရိုက်မသုံးနိုင်ပါ,
URL ကိုဆွဲရန် Parse_url ကို သုံးပါ။
query အပိုင်းကိုခွဲခြားရန် Parse_Str ကို သုံးပါ။
တစ်ခုချင်းစီကို parameter တန်ဖိုးအတွက် urlocode encoding ကိုသုံးပါ။
http_build_query ကို သုံး. Query ကိုပြန်လည်တည်ဆောက်ခြင်း,
ပြီးပြည့်စုံသော URL သို့ spliced ။
ဤနည်းလမ်းသည် URL ဖွဲ့စည်းပုံကိုဆက်လက်ထိန်းသိမ်းထားရုံသာမကဘဲတရုတ်အက္ခရာများကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများကိုရှောင်ရှားခြင်းမှရှောင်ရှားခြင်း,