PHP ရှိ Multibyte ကြိုးများကိုပြုပြင်သည့်အခါအသုံးပြုသော function သည် mb_structcut ဖြစ်ပြီး bytes အရေအတွက်အပေါ် အခြေခံ. သံကြိုးများကိုဖြတ်ကျော်ပြီး Multibyte encoded text processing လုပ်ရန်သင့်လျော်သည်။ သို့သော် developer များစွာသည် mb_structut ကို ကြားဖြတ်. Transpression ကို ကြားဖြတ်. Conbled Interepting ရလဒ်များသို့မဟုတ် truncating feart or truncating forbating ရလဒ်များဖြစ်ပေါ်လာသည်။ ဤဆောင်းပါးသည် MB_structcut ကို encoding အမှားအယွင်းများကိုရှောင်ရှားရန်နှင့်လက်တွေ့ကျသောအကြံပြုချက်များမျှဝေရန်မည်သို့မှန်ကန်စွာအသုံးပြုရမည်ကိုအသေးစိတ်ရှင်းပြပါလိမ့်မည်။
mb_strcut သည် PHP ၏ Multibyte strings of strings များကြားဖြတ်ခြင်းဖြင့်ကြားဖြတ်ခြင်းအတွက်လုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ MB_SubrcrCut နှင့်မတူဘဲ MB_Strcut သည် bytes များမဟုတ်ဘဲ bytes များအပေါ် အခြေခံ. ကြားဖြတ်နေသည်။ ၎င်းသည် byte encoding နှင့်ဆက်ဆံရာတွင်အကြားအာရုံစူးစိုက်မှုအရှည်ကိုဖြတ်တောက်ခြင်း,
function ရှေ့ပြေးပုံစံ:
mb_strcut(string $str, int $start, ?int $length = null, ?string $encoding = null): string
$ str : string ကိုရိုက်ထည့်ပါ။
$ start : bytes အရေအတွက်အားဖြင့်တွက်ချက်, တွက်ချက်မှုကိုစတင်ပါ။
$ အရှည် : ကြားဖြတ်ကြားဖြတ် bytes အရေအတွက် (optional ကို) ။
$ encoding : string encoding, internal encoding ကိုပုံမှန်အားဖြင့်အသုံးပြုသည်။
string ကိုကြားဖြတ်ရန် MB_STRCANT ကို အသုံးပြုရန်အတွက် MB_StrCut ကိုအသုံးပြုရန်အတွက် ဒေါ်လာစျေး သို့မဟုတ် $ အရှည်သည် Multi-byte character အလယ်၌မသင့်လျော်ပါကအမှိုက်များသည် bybled code များမပြည့်စုံသောကြောင့်ပေါ်လာလိမ့်မည်။ အထူးသဖြင့် UTF-8 encoding အတွက်တရုတ်ဇာတ်ကောင်ကိုယေဘုယျအားဖြင့် 3 bytes ဖြင့်ဖွဲ့စည်းထားသည်။ Bytes ကိုကြားဖြတ်သောအခါ, အစမှတ်နှင့်အဆုံးမှတ်သည်ဇာတ်ကောင်နယ်နိမိတ်နှစ်မျိုးလုံးဖြစ်ကြောင်းသေချာစေရန်လိုအပ်သည်။
MB_StrCut ကို အတိအလင်းခေါ်ယူခြင်းသည် string ၏ encoding ကိုအတိအလင်းဖော်ပြသည့်အခါရှေ့နောက်မ 0 င်သော default encoding ကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများကိုရှောင်ရှားရန်ပထမခြေလှမ်းဖြစ်သည်။
$encoding = 'UTF-8';
$result = mb_strcut($str, $start, $length, $encoding);
ကြားဖြတ်ခြင်းမပြုမီ MB_strlen ကို ဒေါ်လာ စျထေး အောင်လုပ်ရန်အတွက် string character length ကိုအကွာအဝေးနှင့်အကွာအဝေးမှရှောင်ရှားရန် MB_strlen ကို သုံးပါ။ တစ်ချိန်တည်းမှာပင် MB_substr ကို အပိုင်းတစ်ပိုင်းကိုမဖြတ်နိုင်အောင် MB_substr ကိုပေါင်းစပ်ပါ။
$length = 10;
if (mb_strlen($str, $encoding) > $length) {
$result = mb_substr($str, 0, $length, $encoding);
} else {
$result = $str;
}
အကယ်. သင်သည် Bytes အရေအတွက်နှင့်ကြားဖြတ်ရန်လိုပါကကြားဖြတ် byte အကွာအဝေးနှင့်သက်ဆိုင်သောဇာတ်ကောင်အပြည့်အစုံကိုတွက်ချက်ပါ, ပြီးနောက် intercept လုပ်ရန် mb_substr ကို သုံးပါ။
function safe_mb_strcut(string $str, int $start, int $length, string $encoding = 'UTF-8'): string {
$substr = mb_strcut($str, $start, $length, $encoding);
// mb_strcut တခါတရံတွင်ဇာတ်ကောင်တစ်ဝက်ကိုဖြတ်နိုင်သည်,transcoding ကတရားဝင်ရှိမရှိအတည်ပြု
if (mb_check_encoding($substr, $encoding)) {
return $substr;
}
// မပြည့်စုံလျှင်,လျှော့ချ,ပြည့်စုံသည်အထိ
while ($length > 0 && !mb_check_encoding($substr, $encoding)) {
$length--;
$substr = mb_strcut($str, $start, $length, $encoding);
}
return $substr;
}
$str = "ဒီစမ်းသပ်မှု string ကိုဖြစ်ပါတယ်,တရုတ်ပါဝင်ပြီးEnglish";
$start = 0;
$length = 15; // bytes အားဖြင့်ကြားဖြတ်
$result = safe_mb_strcut($str, $start, $length, 'UTF-8');
echo $result;
၎င်းသည် byte truncation ကြောင့်ဖြစ်ရတဲ့ဆံပင်ကျပြ problem နာကိုရှောင်ရှားသည်။
mb_strcut သည် bytes အားဖြင့် Multi-byte strings များကိုကြားဖြတ်။ ဇာတ်ကောင်တစ်ဝက်ကိုရှောင်ရှားရန်ဇာတ်ကောင်နယ်နိမိတ်ကိုအာရုံစိုက်ပါ။
function အပြုအမူကိုတသမတ်တည်းကြောင်းသေချာစေရန် encoding parameters တွေကိုခွဲခြားသတ်မှတ်။
ကြားဖြတ်ရွေးချယ်ထားသောရလဒ်များ၏ encoding သမာဓိကို MB_Check_encoding နှင့်ပေါင်းစပ်။ အတည်ပြုနိုင်သည်။
mb_strlen နှင့် mb_subrcr ကိုပေါင်းစပ်ခြင်းကစာလုံးအကြားအာရုံစိုက်ရန်လိုအပ်သည့်အခါပိုမိုလုံခြုံသည်။
အထက်ပါနည်းစနစ်များမှတဆင့် PHP တွင် Multi-byte string interception တွင် Encoding အမှားများကိုထိရောက်စွာရှောင်ရှားနိုင်ပြီးစာသားပြုပြင်ခြင်းနှင့်အသုံးပြုသူအတွေ့အကြုံ၏တိကျမှုကိုသေချာစေနိုင်သည်။
<?php
function safe_mb_strcut(string $str, int $start, int $length, string $encoding = 'UTF-8'): string {
$substr = mb_strcut($str, $start, $length, $encoding);
if (mb_check_encoding($substr, $encoding)) {
return $substr;
}
while ($length > 0 && !mb_check_encoding($substr, $encoding)) {
$length--;
$substr = mb_strcut($str, $start, $length, $encoding);
}
return $substr;
}
$str = "ဒီစမ်းသပ်မှု string ကိုဖြစ်ပါတယ်,တရုတ်ပါဝင်ပြီးEnglish";
$start = 0;
$length = 15;
echo safe_mb_strcut($str, $start, $length, 'UTF-8');
?>
PHP string processing အကြောင်းပိုမိုလေ့လာလိုပါကအောက်ပါအရင်းအမြစ်များကိုရယူနိုင်သည်။
$url = "https://gitbox.net/php/manual/zh/function.mb-strcut.php";