လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> UTF-8 encoding အောက်ရှိ stract_split နှင့်လိုက်လျောညီထွေကိစ္စများ

UTF-8 encoding အောက်ရှိ stract_split နှင့်လိုက်လျောညီထွေကိစ္စများ

M66 2025-06-02

PHP တွင် string_split သည် strings များကိုသေးငယ်သောအလွှာများအဖြစ်ခွဲဝေပေးသောအသုံးများသော string protring protring protring protring provide လုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ သို့သော်ဤ function သည်အလွန်ထိရောက်သောကြောင့် UTF-8 encoded strings များအသုံးပြုသောအခါသင်ကလိုက်ဖက်တဲ့ပြ issues နာအချို့ကိုသင်ကြုံတွေ့ရလိမ့်မည်။ ဤဆောင်းပါးသည်အဘယ်ကြောင့်ဤသို့ဖြစ်ပျက်ရခြင်းနှင့်ဖြစ်နိုင်ချေရှိသောဖြေရှင်းနည်းများကိုပေးရန်လေ့လာပါလိမ့်မည်။

1 ။ PHP strow_split function ကိုခြုံငုံသုံးသပ်ချက်

strow_Split function ၏ function သည် string ကိုသတ်မှတ်ထားသောအရှည်နှင့်အညီ string ကိုခွဲရန်နှင့်ခင်းကျင်းရန်နှင့်ခင်းကျင်းရန်။ ဥပမာအားဖြင့်:

 $str = "HelloWorld";
$result = str_split($str, 5);
print_r($result);

output ရလဒ်ဖြစ်လိမ့်မည်:

 Array
(
    [0] => Hello
    [1] => World
)

ဤအင်္ဂါရပ်သည် Ascii ကြိုးများ၌အလွန်အလိုအလျောက်နှင့်ထိရောက်မှုရှိသည်။ သို့သော် UTF-8 encoding အောက်တွင်အခြေအနေကွဲပြားသည်။

2 ။ Utf-8 encoding နှင့်ဇာတ်ကောင် bytes

UTF-8 သည်ဇာတ်ကောင်တစ် ဦး ချင်းစီကို 1 မှ 4 ကနေ 4 မှ 4 အထိကိုယ်စားပြုခွင့်ပြုသည့် variable-lueg ဇာတ်ကောင် encoding ဖြစ်သည်။ အင်္ဂလိပ်ကဲ့သို့သောအခြေခံဇာတ်ကောင်များအတွက် UTF-8 သည် 1 byte ကိုအသုံးပြုသည်။ သို့သော်တရုတ်နှင့်ဂျပန်ကဲ့သို့သောစာလုံးများအတွက် UTF-8 encoding သည် 3 မှ 4 ဒြပ်စင်ကိုအသုံးပြုသည်။ ထို့ကြောင့် utf-8 -8-encoded strings string strat_split ကိုအသုံးပြုပြီး splitting သောအခါ, fixed bytes အရေအတွက်ကကွဲနေလျှင်ပြ problems နာများပေါ်ပေါက်လာနိုင်သည်။

ဥပမာအားဖြင့်အောက်ပါ UTF-8 encoded string ကိုစဉ်းစားပါ။

 $str = "မင်္ဂလာပါWorld";

ဤနေရာတွင် "ဟဲလို" ဒီမှာ 6 bytes ကိုအသုံးပြုသည်။ "World" သည် 5 bytes ကိုအသုံးပြုသည်။ အကယ်. strow_split ($ str, 3) ကို အသုံးပြုပါက PHP သည် 3 bytes များကိုခွဲထုတ်မည်ဖြစ်ပြီး, သင်သည် "သင်" နှင့် "ကောင်းသော" နှင့် "ကောင်းသော" နှင့် "ကောင်းသော" နှင့် "ကောင်းသော" နှင့် "ကောင်းသော" ကိုအပိုင်းနှစ်ပိုင်းခွဲထားပြီးဤဇာတ်ကောင်များသည်တစ်ခုလုံးဖြစ်သင့်သည်။

 $str = "မင်္ဂလာပါWorld";
$result = str_split($str, 3);
print_r($result);

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

 Array
(
    [0] => ခင်ဗျားတို့
    [1] => ကောင်းသော
    [2] => Wor
    [3] => ld
)

strow_Split သည် ဇာတ်ကောင် (ဥပမာ ") သည်အပိုင်းအခြားမျိုးစုံအဖြစ် (ဥပမာ") ကွဲပြားမှုကိုခွဲခြားသိမြင်နိုင်ကြောင်းသင်တွေ့နိုင်သည်။ ထိုသို့သောအပိုင်းသည် string ၏သမာဓိကိုထိခိုက်ရုံသာမကပြသနာများပြ problems နာများကိုလည်းဖြစ်စေနိုင်သည်။

3 ။ အဘယ်ကြောင့်ဤအဘယ်သို့ဖြစ်သနည်း

ပြ problem နာ၏အဓိကအကြောင်းရင်းမှာ UTF-8 encoded ဇာတ်ကောင်များတွင် bytes အရေအတွက်မှာယူနီဖောင်းမဟုတ်ပါ။ PHP ၏ strow_split function သည်စာလုံးများမဟုတ်ဘဲ bytes တွင်အလုပ်လုပ်သည်။ ထို့ကြောင့် strat_split ကို UTF-8-encoded string ကိုခွဲခြားရန်အသုံးပြုသောအခါ၎င်းသည်ဇာတ်ကောင်များ၏အမှန်တကယ်နယ်နိမိတ်များကိုလျစ်လျူရှုထားသည်။

ဤပြ problem နာကိုပိုမိုနားလည်ရန်၎င်းကိုယူနီကုဒ်ဇာတ်ကောင် encoding ပြ problem နာတစ်ခုအနေဖြင့်စဉ်းစားနိုင်သည်။ အကယ်. သင်သည် bytes အားဖြင့်တိုက်ရိုက်ခွဲခြားပါက, အက်ခရာများ၏သမာဓိကိုအထူးသဖြင့်မာဗ္ဇti-byte အက္ခရာများကိုအာမခံနိုင်မည်မဟုတ်ပါ။

4 ။ ဒီပြ problem နာကိုဘယ်လိုဖြေရှင်းရမလဲ။

ဤပြ problem နာအတွက်အဖြေမှာ utf-8 strings strings ကို strow_split သုံး. တိုက်ရိုက်ခွဲထုတ်ခြင်းကိုရှောင်ရှားရန်ဖြစ်သည်။ ထိုအစားကျွန်ုပ်တို့သည် MB_Str_Split ကဲ့သို့သော MB_Str_Split ကဲ့သို့သော Multibyte ဇာတ်ကောင်များကိုကိုင်တွယ်ရန်ပိုမိုသင့်တော်သော PHP လုပ်ဆောင်ချက်များကိုသုံးနိုင်သည်။

mb_str_split ကိုအသုံးပြုခြင်းဥပမာ -

 $str = "မင်္ဂလာပါWorld";
$result = mb_str_split($str, 1, 'UTF-8');
print_r($result);

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

 Array
(
    [0] => ခင်ဗျားတို့
    [1] => ကောင်းသော
    [2] => W
    [3] => o
    [4] => r
    [5] => l
    [6] => d
)

mb_str_split ဖြင့်ဇာတ်ကောင်တစ်ခုစီသည်မှန်ကန်စွာခွဲခြားထားပြီးတရုတ်စာလုံးများကိုခွဲထုတ်ခြင်း၏ပြ problem နာကိုရှောင်ရှားသည်။ သတိပြုသင့်သည်မှာ Mbstring extension ကိုအသုံးပြုသောအခါ၎င်းကို install လုပ်ပြီးဖွင့်ထားရန်သေချာစေရမည်။

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

PHP ၏ str'split function သည် UTF-8 encoded strings များကိုကိုင်တွယ်သောအခါ UTF-8 encoded charactes encoded မိတ္တူကူးခြင်းများကြောင့်အထူးသဖြင့် string သည် Multibyte ဇာတ်ကောင်များပါ 0 င်သည်။ ဤပြ problem နာကိုရှောင်ရှားရန် MB_Str_Split ကို utf-8 encoded strings များကိုမှန်ကန်စွာခွဲခြားသတ်မှတ်ထားရန်အသုံးပြုသည်။

အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည်အထူးသဖြင့်အပြည်ပြည်ဆိုင်ရာကြိုးများနှင့်ကိုင်တွယ်သောအခါ Multibyte ဇာတ်ကောင်များကိုထောက်ပံ့သောလုပ်ငန်းဆောင်တာများကိုအသုံးပြုရန်စဉ်းစားသင့်သည်။ ၎င်းသည်စာလုံးများကိုမှားယွင်းစွာခွဲဝေခြင်းမှကာကွယ်ပေးရုံသာမက Code compatibility နှင့်တည်ငြိမ်မှုကိုတိုးတက်စေသည်။