လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> တရုတ်ကြိုးများပြုပြင်သည့်အခါ MB_Get_info function တွင်အသုံးအများဆုံးနားလည်မှုများ

တရုတ်ကြိုးများပြုပြင်သည့်အခါ MB_Get_info function တွင်အသုံးအများဆုံးနားလည်မှုများ

gitbox 2025-05-11

PHP Development တွင် Mbstring extension သည် Mbstring Extension သည် Multibyte ကြိုးများနှင့်ဆက်ဆံရာတွင်ကျွန်ုပ်တို့ရှောင်ရှားနိုင်သည့်အစိတ်အပိုင်းတစ်ခုဖြစ်သည်။ MB_GET_INFO () သည်လက်ရှိ Multibyte configuration environment ားဝန်းကျင်နှင့်ပတ်သက်သောသတင်းအချက်အလက်ရယူရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ သို့သော် developer များစွာသည်တရုတ် strings များကိုလုပ်ဆောင်ရန်အသုံးပြုသောအခါများသောအားဖြင့်နားလည်မှုလွဲမှားခြင်းများသို့ကျရောက်နိုင်သည်။ ဤဆောင်းပါးသည်သင့်အားဤထောင်ချောက်များကိုနားလည်ရန်နှင့်သင်၏စီမံကိန်းတွင်အမှားများကျူးလွန်မိခြင်းကိုရှောင်ရှားရန်သင့်အားကူညီလိမ့်မည်။

1 ။ မှားယွင်းသောယူဆချက် 1 - MB_GEget_info () MB_Get_info () သည် 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 ကိုသူ့ဟာသူအကြောင်းကိုဘာမှမလုပ်နိုင်ပါ။

2 ။ အမှား 2 - အတွင်းပိုင်း encoding ကိုမှန်ကန်စွာသတ်မှတ်ထားခြင်းမရှိပါ

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");
?>

3 ။ မှားယွင်းမှု 3: Mbstring.function_overload ၏ဘေးထွက်ဆိုးကျိုးများကိုလျစ်လျူရှုခြင်း

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 အစားကိုပိတ်ထားရန်သို့မဟုတ်၎င်းကိုပိတ်ထားသည့်ကုဒ်များကိုအမြဲတမ်းယူဆရန်အကြံပြုသည်။

4 ။ အမှား 4 - URL သည်တရုတ်စာဖြင့် Encodes သောအခါဇာတ်ကောင်အစုံများ၏သွဇာလွှမ်းမိုးမှုကိုလျစ်လျူရှုပါ

လူအများစုက 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 () ကိုမသတ်မှတ်ပါက,

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

MB_GEGET_INFO () သည်အသုံးဝင်သောရောဂါရှာဖွေရေးကိရိယာတစ်ခုဖြစ်သည်။ သို့သော်၎င်းသည်ကြိုးကြိုးများကိုကိုယ်တိုင်ကိုင်တွယ်ခြင်းမရှိပါ။ လက်ရှိ PHP Multibyte ပတ် 0 န်းကျင်ကိုမှန်ကန်စွာပြင်ဆင်ခြင်းရှိမရှိ developer များနားလည်ရန်နှင့်အတည်ပြုရန်ပိုမိုအသုံးပြုသည်။ တရုတ်ကြိုးများကိုပြုပြင်သည့်အခါ encoding settings ကိုအထူးဂရုပြုပါ URLs ကဲ့သို့သောအခြားလုပ်ဆောင်မှုများနှင့်ပေါင်းစပ်သည့်အခါ encoding settings နှင့် encoding compatibility ကိုအထူးဂရုပြုပါ။

အထက်ပါနားလည်မှုလွဲမှားခြင်းများကိုရှောင်ရှားခြင်းသည်တရုတ်နှင့်ဆက်ဆံရာတွင်သင်၏ PHP စီမံကိန်းကိုပိုမိုတည်ငြိမ်ပြီးထိရောက်စေနိုင်သည်။ အကယ်. သင်သည်ဒေသပတ် 0 န်းကျင်သို့မဟုတ်ထုတ်လုပ်မှုပတ်ဝန်းကျင်တွင်ဇာတ်ကောင်ပြ problems နာများကို debugging လုပ်နေပါက MB_Get_info () ကို ပိုမိုသုံးနိုင်သည်ဆိုလျှင်၎င်းသည်အဖိုးတန်သောသတင်းအချက်အလက်များစွာပေးနိုင်သည်။