လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> strow_split နှင့် mb_str_split ရောနှောခြင်းကြောင့်ဖြစ်ရတဲ့ bug တွေကိုဘယ်လိုရှောင်ရှားရမလဲ

strow_split နှင့် mb_str_split ရောနှောခြင်းကြောင့်ဖြစ်ရတဲ့ bug တွေကိုဘယ်လိုရှောင်ရှားရမလဲ

M66 2025-05-28

PHP ပရိုဂရမ်တွင် string processing သည်အသုံးအများဆုံးအလုပ်များတစ်ခုဖြစ်သည်။ ကြိုးများတူးဖော်ခြင်းအတွက် strings_split နှင့် mb_str_split လုပ်ဆောင်ချက်များကိုမကြာခဏဆိုသလို strings array များအဖြစ်ခွဲထွက်ရန်အသုံးပြုကြသည်။ လုပ်ဆောင်ချက်နှစ်ခုသည်လည်းအလားတူအလုပ်လုပ်ကြသည်။ ဤလုပ်ဆောင်ချက်နှစ်ခုကိုရောနှောခြင်းကအထူးသဖြင့် UTF-8 ကဲ့သို့သော Multibyte ဇာတ်ကောင်အစုံနှင့်ဆက်ဆံရာတွင်အမှားများကိုဖြစ်ပေါ်စေသည်။ ဤဆောင်းပါးသည် PHP ရှိဤလုပ်ဆောင်မှုနှစ်ခုကိုရောနှောခြင်းကြောင့်ဖြစ်နိုင်ချေရှိသောအမှားများကိုမည်သို့ရှောင်ရှားရမည်ကိုလေ့လာလိမ့်မည်။

1 ။ str_split နှင့် mb_str_split လုပ်ဆောင်ချက်များအကြားခြားနားချက်

1.1 strow_split function ကို

Str_Split function သည် PHP တွင် string တစ်ခုဖြစ်သည့် string တစ်ခုဖြစ်သည့် strings တစ်ခုဖြစ်စေသည့် strings တစ်ခုသို့ခွဲထားသည့် strings ကိုခွဲခြားထားသည်။ ဤလုပ်ဆောင်မှုကိုပုံမှန်အားဖြင့် byte တစ်ခုစီ၏ယူနစ်တစ်ခုစီတွင်ခွဲထားသည်။ ဆိုလိုသည်မှာ ISO-8859-1 သို့မဟုတ် ASCII ကဲ့သို့သော Single-byte character sets များကိုကိုင်တွယ်သောအခါ၎င်းသည်ကောင်းမွန်စွာလုပ်ဆောင်သည်။ သို့သော် Multibyte ဇာတ်ကောင်အစုံများအတွက် (UTF-8) အတွက် str'tsplit သည် ဇာတ်ကောင်တစ် ဦး စီကိုသီးခြား byte တစ်ခုအဖြစ်ခွဲထားလိမ့်မည်။

နမူနာကုဒ်:

 $string = "မင်္ဂလာပါ,ကမ်ာဘ";
$result = str_split($string);
print_r($result);

output ကိုဖြစ်လိမ့်မည်:

 Array
(
    [0] => ခင်ဗျားတို့
    [1] => ကောင်းသော
    [2] => ,
    [3] => ကမ်ာဘ
    [4] => နယ်နိမိတ်
)

1.2 mb_str_split function ကို

strow_split နှင့်မတူဘဲ MB_Str_Split သည် Multibyte string function ကိုမှန်ကန်စွာပြုလုပ်သော Multibyte string function ဖြစ်သည်။ ၎င်းကို Mbstring extension မှတဆင့်ထောက်ပံ့သည်။ ထို့ကြောင့်၎င်းကိုအသုံးပြုသောအခါဆာဗာတွင် extension ကိုသေချာအောင်ပြုလုပ်ရန်လိုအပ်သည်။

နမူနာကုဒ်:

 $string = "မင်္ဂလာပါ,ကမ်ာဘ";
$result = mb_str_split($string);
print_r($result);

ထုတ်လွှင့်မှုရလဒ်များကိုမှန်ကန်စွာဖော်ပြလိမ့်မည်။

 Array
(
    [0] => ခင်ဗျားတို့
    [1] => ကောင်းသော
    [2] => ,
    [3] => ကမ်ာဘ
    [4] => နယ်နိမိတ်
)

2 ။ str_split နှင့် mb_str_split ရောနှောခြင်း၏အလားအလာပြ problems နာများ

2.1 coding ပြ issues နာများ

အကယ်. သင်သည် str'stplit နှင့် mb_str_split ကိုအသုံးပြုပါက, strip_Split သည် string ကို bytes များဖြင့်ခွဲထားလိမ့်မည်။ MB_Str_Split သည် string ကိုဇာတ်ကောင်များ၏အမှန်တကယ် encoding နှင့်အညီ string ကိုခွဲထုတ်လိမ့်မည်။

အကယ်. သင်သည်ဤလုပ်ဆောင်ချက်နှစ်ခုကိုရောစပ်ပါကအောက်ပါပြ problems နာများကိုဖြစ်စေနိုင်သည်။

  • ကြိုးများပြိုကွဲခြင်း၏ရလဒ်များသည်အထူးသဖြင့် UTF-8-encoded strings နှင့်ဆက်ဆံရာတွင်ကိုက်ညီမှုမရှိပါ။

  • ကြိုးတွေကိုမှားယွင်းစွာဖြည့်ဆည်းပေးနိုင်ပြီး,

2.2 စွမ်းဆောင်ရည်ပြ issues နာများ

strow_split သည်အထူးသဖြင့်တစ်ခုတည်းသော byte character sets များနှင့်ဆက်ဆံရာတွင်များသောအားဖြင့် mb_str_split ထက်ပိုမိုထိရောက်သော PHP function ဖြစ်သည်။ သို့သော် MB_Str_Split သည် Encoding checks နှင့် twipe များကိုခွဲထုတ်နေစဉ်အတွင်းလုပ်ဆောင်သည် နှစ်ခုရောနှောခြင်းကမလိုအပ်ဘဲစွမ်းဆောင်ရည်ဆုံးရှုံးမှုကိုဖြစ်စေနိုင်သည်။

3 ။ str._split နှင့် mb_str_split ရောနှောခြင်းနှင့် MB_Str_Split ကိုရောထွေးခြင်းမှရှောင်ရှားရန်

PHP ရှိဤလုပ်ဆောင်ချက်နှစ်ခုကိုရောနှောခြင်းကြောင့်ဖြစ်ပေါ်လာသောအမှားများကိုရှောင်ရှားနိုင်ရန်အတွက်အောက်ပါမူများကိုလိုက်နာနိုင်ပါသည်။

3.1 MB_Str_Split ၏စည်းလုံးညီညွတ်စွာအသုံးပြုခြင်း

အကယ်. သင်၏လျှောက်လွှာသည်အဓိကအားဖြင့် Multibyte ဇာတ်ကောင်အစုံ (UTF-8 ကဲ့သို့သော) ကိုအဓိကထားပါက MB_Str_Split ကို တူညီစွာအသုံးပြုရန်အကြံပြုသည်။ Multibyte ဇာတ်ကောင်များကိုမှန်ကန်စွာကိုင်တွယ်နိုင်ပြီး segment အမှားများကိုရှောင်ရှားနိုင်သည်။

 $string = "မင်္ဂလာပါ,ကမ်ာဘ";
$result = mb_str_split($string);
print_r($result);

3.2 str'split ကို အသုံးပြုသောအခါတသမတ်တည်း encoding ကိုသေချာပါစေ

အကယ်. သင်သည် strow_split ကို သုံးရန်လိုပါက (ဥပမာ - byte character sets sets ကိုကိုင်တွယ်ဖြေရှင်းသည့်အခါ) string ကိုမှန်ကန်စွာ encoded သေချာအောင်လုပ်ပါ။ string ကို single-byte encoding သို့ပြောင်းရန် MB_ConVert_encoding function ကိုသုံးနိုင်သည်။

 $string = mb_convert_encoding("မင်္ဂလာပါ,ကမ်ာဘ", "ISO-8859-1", "UTF-8");
$result = str_split($string);
print_r($result);

3.3 တိုးချဲ့ထောက်ခံမှုအတွက်စစ်ဆေးပါ

MB_Str_Split ကို အသုံးပြုသောအခါဆာဗာသည် mbstring extension ကိုတပ်ဆင်ပြီးဖွင့်ထားကြောင်းသေချာပါစေ။ extension ကိုဖွင့်ထားရှိမရှိကိုသင်စစ်ဆေးနိုင်သည်။

 if (extension_loaded('mbstring')) {
    echo "mbstring is enabled!";
} else {
    echo "mbstring is not enabled!";
}

4 ။ နိဂုံးချုပ်

PHP တွင် strings များပြုလုပ်သောအခါ strings_split နှင့် mb_str_split နှင့် mb_str_split နှစ်ခုသည်အုပ်စုလိုက်ခွဲထားသောလုပ်ဆောင်ချက်နှစ်ခုဖြစ်သည်။ ၎င်းတို့သည်မတူညီသောအခြေအနေများတွင်အသုံးပြုသည်။ strat_split သည် single-byte character set များကိုပြုပြင်ရန်အတွက်ပိုမိုသင့်တော်သည် ဤလုပ်ဆောင်ချက်နှစ်ခုကိုရောနှောခြင်းက encoding အမှားများနှင့်စွမ်းဆောင်ရည်ပြ problems နာများကိုဖြစ်ပေါ်စေနိုင်သည်။ ထို့ကြောင့်၎င်းကိုတတ်နိုင်သမျှရှောင်ရှားသင့်သည်။ MB_Str_Split ကို MB_Str_Split ကိုသုံးရန်နှင့် strings ၏ encoding ရှေ့နောက်ညီညွတ်မှုကိုသေချာစွာသုံးရန်အကြံပြုသည်။ ကြိုးများတူးဖော်သည့်အခါပရိုဂရမ်၏တည်ငြိမ်မှုနှင့်မှန်ကန်မှုကိုသေချာစေသည်။