PHP တွင် Parse_Url function သည် URLs အတွက်သီးနှံများအတွက်ဘုံကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည် protocols များ, host များ, လမ်းကြောင်းများ, မေးမြန်းခြင်းဆိုင်ရာသတ်မှတ်ချက်များစသည့် URL တွင်အစိတ်အပိုင်းများကိုအလွယ်တကူထုတ်ယူ နိုင်သည် ။ ဘာဖြစ်လို့လဲဆိုတော့ URL မှာရှိတဲ့တရုတ်ဇာတ်ကောင်တွေဟာ Parse_Url က မှန်ကန်စွာအသိအမှတ်ပြုနိုင်မှာမဟုတ်မှီမှန်မှန်ကန်ကန် encoded ဖို့လိုတယ်။
ဤဆောင်းပါးသည်တရုတ်စာလုံးများပါ 0 င်သည့် URL များကိုမှန်ကန်စွာလုပ်ဆောင်ရန် PHP ၏ Parse_url function ကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်မိတ်ဆက်ပေးမည် ။
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);
ဤကုဒ်သည်မမှန်ကန်ပါသို့မဟုတ်မပြည့်စုံသောရလဒ်ကိုပြန်ပို့နိုင်သည်။
အသုံးအများဆုံးအလေ့အကျင့်မှာ 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;
}
$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] => ခဲှခြား
)
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 ကိုသုံးနိုင်သည်။