PHP Development တွင် Mbstring extension သည် Mbstring Extension သည် Multibyte ကြိုးများနှင့်ဆက်ဆံရာတွင်ကျွန်ုပ်တို့ရှောင်ရှားနိုင်သည့်အစိတ်အပိုင်းတစ်ခုဖြစ်သည်။ MB_GET_INFO () သည်လက်ရှိ Multibyte configuration environment ားဝန်းကျင်နှင့်ပတ်သက်သောသတင်းအချက်အလက်ရယူရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ သို့သော် developer များစွာသည်တရုတ် strings များကိုလုပ်ဆောင်ရန်အသုံးပြုသောအခါများသောအားဖြင့်နားလည်မှုလွဲမှားခြင်းများသို့ကျရောက်နိုင်သည်။ ဤဆောင်းပါးသည်သင့်အားဤထောင်ချောက်များကိုနားလည်ရန်နှင့်သင်၏စီမံကိန်းတွင်အမှားများကျူးလွန်မိခြင်းကိုရှောင်ရှားရန်သင့်အားကူညီလိမ့်မည်။
MB_Get_info () သည် "strings strings" လုပ်ရန်အသုံးပြုသော function တစ်ခုမဟုတ်ပါ။ ၎င်း၏အဓိကလုပ်ဆောင်ချက်မှာ လက်ရှိ Mbstring ပတ်ဝန်းကျင်၏ configuration information ကိုရရှိရန် ဖြစ်သည်။ အစပြုသူများစွာသည်ဤလုပ်ဆောင်မှုသည် string သည်တရုတ်ဖြစ်သည်ကိုမှားယွင်းစွာစဉ်းစားမိသည်။ encoding သည်မှန်ကန်သည်, အမှန်မှာ၎င်းသည်လက်ရှိဘာသာစကားဆက်တင်များ, encoding settings, internal encoding စသည်ဖြင့်သတင်းအချက်အလက်များကိုသာပြန်ပို့ပေးသည်။
<?php
print_r(mb_get_info());
?>
output ကိုပါ 0 င်သည် -
Array
(
[internal_encoding] => UTF-8
[http_output] => UTF-8
[http_input] => pass
[func_overload] => 0
...
)
ဤရွေ့ကားပတ်ဝန်းကျင်ဆိုင်ရာသတင်းအချက်အလက်များဖြစ်ကြသည်နှင့်တရုတ် string ကိုသူ့ဟာသူအကြောင်းကိုဘာမှမလုပ်နိုင်ပါ။
MB_GET_InFO () ကိုအသုံးပြုပြီးသတင်းအချက်အလက်ကိုကြည့်ရှုသည့်အခါ, internal_encoding သည် UTF-8 မဟုတ်ကြောင်းသင်တွေ့ရှိပါကသင်သတိထားရမည်။ ဘာဖြစ်လို့လဲဆိုတော့တရုတ်ကြိုးတွေနဲ့ဆက်ဆံတဲ့အခါ UTF-8 ဟာအထွေထွေနဲ့အလုံခြုံဆုံး encoding method ဟာပါပဲ။ အကယ်. သင်သည်မမှန်မကန်ကိုမမှန်ကန်ပါက MB_strinlen () , MB_Substred () ကဲ့သို့သောလုပ်ဆောင်မှုများကိုတရုတ်အမှားအယွင်းများ,
မှန်ကန်သော setting ကိုနည်းလမ်း:
<?php
mb_internal_encoding("UTF-8");
လက်ရှိချိန်ညှိချက်များကို MB_Get_info ('internal_encoding') မှန်ကန်မှုရှိမရှိစစ်ဆေးနိုင်သည်။
<?php
echo "လက်ရှိပြည်တွင်းရေး encoding:" . mb_get_info("internal_encoding");
?>
MB_Get_info မှပြန်လာသော Func_overload Field သည် PHP တွင် function overloading ကိုဖွင့်ထားခြင်းရှိမရှိဖော်ပြသည်။ အကယ်. သင်သည် (0 င်ထက်ကြီးမြတ်တန်ဖိုး) ကို enable လုပ်ပါက strlen () နှင့် substric) စသည့်ဇာတိလုပ်ဆောင်ချက်များသည် Mbstring မှ overload လုပ်နိုင်သည်။ ၎င်းသည်အချို့သောကိစ္စရပ်များတွင်မကိုက်ညီသောအပြုအမူများကိုဖြစ်ပေါ်စေနိုင်သည်။
ဥပမာအားဖြင့်, အောက်ပါကုဒ်:
<?php
$str = "တရုတ်စမ်းသပ်မှု";
echo strlen($str); // လှျင် func_overload ဖွင့်လှစ်,၎င်းကို bytes ထက်ဇာတ်ကောင်အရေအတွက်ကတွက်ချက်နိုင်ပါသည်
?>
အချို့သောစနစ်များတွင် 12 ခုအစား (စာလုံးအရေအတွက်) အစား 12 ခု (တရုတ်တစ် ဦး လျှင် 3 bytes) ကိုပြန်ပို့ပေးလိမ့်မည်။
Explicit MB_strinlen () အစားဇာတိလုပ်ဆောင်ချက်များအစား Func_overload အစားကိုပိတ်ထားရန်သို့မဟုတ်၎င်းကိုပိတ်ထားသည့်ကုဒ်များကိုအမြဲတမ်းယူဆရန်အကြံပြုသည်။
လူအများစုက Mbstring နှင့် URL စစ်ဆင်ရေးများကိုတရုတ် parameters များကို splicing urls ကဲ့သို့သော mbstring နှင့် URL စစ်ဆင်ရေးများကိုပေါင်းစပ်ကြလိမ့်မည်။ urlecode () စစ်ဆင်ရေးအတွက်တရုတ်ကြိုးများကိုအသုံးပြုသောအခါ encoding ကို UTF-8 သို့မသတ်မှတ်ပါက URL encoding မှားသွားနိုင်သည်။
ဥပမာ -
<?php
mb_internal_encoding("UTF-8");
$name = "Zhang San";
$url = "https://gitbox.net/search?name=" . urlencode($name);
echo $url;
?>
UTF-8, URLENDODEDED () ကိုမသတ်မှတ်ပါက,
MB_GEGET_INFO () သည်အသုံးဝင်သောရောဂါရှာဖွေရေးကိရိယာတစ်ခုဖြစ်သည်။ သို့သော်၎င်းသည်ကြိုးကြိုးများကိုကိုယ်တိုင်ကိုင်တွယ်ခြင်းမရှိပါ။ လက်ရှိ PHP Multibyte ပတ် 0 န်းကျင်ကိုမှန်ကန်စွာပြင်ဆင်ခြင်းရှိမရှိ developer များနားလည်ရန်နှင့်အတည်ပြုရန်ပိုမိုအသုံးပြုသည်။ တရုတ်ကြိုးများကိုပြုပြင်သည့်အခါ encoding settings ကိုအထူးဂရုပြုပါ URLs ကဲ့သို့သောအခြားလုပ်ဆောင်မှုများနှင့်ပေါင်းစပ်သည့်အခါ encoding settings နှင့် encoding compatibility ကိုအထူးဂရုပြုပါ။
အထက်ပါနားလည်မှုလွဲမှားခြင်းများကိုရှောင်ရှားခြင်းသည်တရုတ်နှင့်ဆက်ဆံရာတွင်သင်၏ PHP စီမံကိန်းကိုပိုမိုတည်ငြိမ်ပြီးထိရောက်စေနိုင်သည်။ အကယ်. သင်သည်ဒေသပတ် 0 န်းကျင်သို့မဟုတ်ထုတ်လုပ်မှုပတ်ဝန်းကျင်တွင်ဇာတ်ကောင်ပြ problems နာများကို debugging လုပ်နေပါက MB_Get_info () ကို ပိုမိုသုံးနိုင်သည်ဆိုလျှင်၎င်းသည်အဖိုးတန်သောသတင်းအချက်အလက်များစွာပေးနိုင်သည်။