PHP တွင် string_split သည် strings strings ကိုသတ်မှတ်ထားသောအရှည်ဖြင့်ခင်းကျင်းခြင်းဖြင့်ခွဲထားသည့်အသုံးများသော string splitting function တစ်ခုဖြစ်သည်။ သို့သော်ကျွန်ုပ်တို့သည် (တရုတ်, ဂျပန်, ကိုးရီးယားစသကဲ့သို့) Multibyte အက္ခရာများကိုကိုင်တွယ်သောအခါ strip_split သည် Single-byte အက္ခရာများအပေါ် အခြေခံ. ဒီဇိုင်းရေးဆွဲခြင်းကြောင့်ကျော့ကွင်းအချို့ကိုယူဆောင်လာနိုင်သည်။ ဤဆောင်းပါးသည် multibyte အက္ခရာများကို strow_split နှင့်ကွဲပြားသောပြ problems နာများကိုဆွေးနွေးပါလိမ့်မည်။
ပုံမှန်အားဖြင့် strip_split လုပ်ဆောင်ချက်သည်ပေးထားသောအရှည်အရသိရသည် string ကိုခွဲထားသည်။ တစ်ခုတည်းသော byte အက္ခရာများအတွက် (ဥပမာ ascii ဇာတ်ကောင်များကဲ့သို့) သည်ပြ problem နာမရှိပါ။ သို့သော် Multi-byte ဇာတ်ကောင်များအတွက် strow_split ကိုမပြည့်စုံသော byte sequencess သို့ခွဲဝေနိုင်သည်။
ဥပမာအားဖြင့်, ကျွန်ုပ်တို့တွင်အောက်ပါ string ကို (တရုတ်အပါအ 0 င်) ရှိသည်ဆိုပါစို့။
$str = "မင်္ဂလာပါ,PHP!";
$split = str_split($str, 3);
print_r($split);
အထက်ပါကုဒ်ကိုကွပ်မျက်သည့်အခါကျွန်ုပ်တို့၏မျှော်လင့် ချက် သည် string သုံးလုံးစီတိုင်းကိုခွဲထုတ်ရန်ဖြစ်သည်။
ဤပြ problems နာများကိုရှောင်ရှားရန်အောက်ပါနည်းလမ်းများကိုကျွန်ုပ်တို့သုံးသပ်နိုင်သည်။
MPP Multibyte Set Extension function multibyte extension function ကိုထောက်ပံ့ပေးသည်။ MB_Str_Split သည် MB_Str_Split ကိုထောက်ပံ့ပေးသည်။ MB_Str_Split သည် string ကိုအက္ခရာများ (bytes ထက်) ဇာတ်ကောင်များဖြင့်ခွဲထုတ်လိမ့်မည်။
နမူနာကုဒ်:
$str = "မင်္ဂလာပါ,PHP!";
$split = mb_str_split($str, 3, 'UTF-8');
print_r($split);
ဤနည်းအားဖြင့် MB_Str_Split သည် ဇာတ်ကောင်များ၏အမှန်တကယ်အကျယ်အရဖြတ်တောက်မည်ဖြစ်ပြီးဇာတ်ကောင်တစ် ဦး စီသည်မှားယွင်းစွာခွဲဝေခြင်းမရှိပါ။
MB__Str_Split သည် သင်၏ပတ်ဝန်းကျင်အတွက်မသင့် တော် ပါ။
နမူနာကုဒ်:
$str = "မင်္ဂလာပါ,PHP!";
$length = 3;
$chunks = [];
for ($i = 0; $i < mb_strlen($str, 'UTF-8'); $i += $length) {
$chunks[] = mb_substr($str, $i, $length, 'UTF-8');
}
print_r($chunks);
ဤဥပမာတွင် MB_Substr မှတစ်ဆင့်အနေဖြင့်အလွှာတစ်ခုစီကိုတဖြည်းဖြည်းချင်းရပြီး byte အက္ခရာများကွဲနေသောအခြေအနေကိုရှောင်ရှားရန်။
အကယ်. သင်သည် strow_split ကို ဆက်လက်အသုံးပြုရန်ဆုံးဖြတ်ပါကအနည်းဆုံး MB_internal_encoding ကို အသုံးပြု. မှန်ကန်သောစာလုံး Encoding ကိုသေချာစွာသတ်မှတ်ထားပါ။ strow_split ကိုယ်တိုင်က multibyte ဇာတ်ကောင်အမျိုးမျိုး၏ encoding ပြ problems နာများကိုအလိုအလျောက်မကိုင်တွယ်နိုင်သော်လည်း PHP သည်မှန်ကန်သော encoding (UTF-8 ကဲ့သို့သော) ကိုအသုံးပြုသည်။
mb_internal_encoding("UTF-8");
$str = "မင်္ဂလာပါ,PHP!";
$split = str_split($str, 3);
print_r($split);
၎င်းသည် Multi-byte ဇာတ်ကောင်ကွဲခြင်း၏ပြ problem နာကိုလုံးဝမရှောင်ရှားနိုင်ပါ။
Multibyte ဇာတ်ကောင်များကို PHP ကိုအသုံးပြုသောအခါ string_split function သည် string ကိုစနစ်တကျမခွဲနိုင်ပါ။ ဤပြ problems နာများကိုရှောင်ရှားရန် MB_Str_Split သို့မဟုတ် MB_Subsubtr ကဲ့သို့သော Multibyte ဇာတ်ကောင်များနှင့်အထူးကိုင်တွယ်သောလုပ်ဆောင်ချက်များကိုအသုံးပြုနိုင်သည်။ တစ်ချိန်တည်းမှာပင်, ထိုဇာတ်ကောင် encoding ကိုမှန်ကန်စွာသတ်မှတ်ထားခြင်းသည်မှန်ကန်စွာသတ်မှတ်ထားခြင်းဖြစ်သည်။
ဤနည်းလမ်းများကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် Multibyte ဇာတ်ကောင်များကိုပိုမိုလုံခြုံစွာကိုင်တွယ်နိုင်သည်။ ထို့ကြောင့်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်တွေ့ကြုံခဲ့ရသောထောင်ချောက်များကိုရှောင်ရှားနိုင်သည်။