လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> mb_structcut နှင့်အတူ string ကိုကြားဖြတ်သောအခါငါ carbled code ရလျှင်ငါဘာလုပ်သင့်သလဲ? concled code ကိုရှောင်ရှားရန်လက်တွေ့နည်းလမ်းများသင်ပေးပါ

mb_structcut နှင့်အတူ string ကိုကြားဖြတ်သောအခါငါ carbled code ရလျှင်ငါဘာလုပ်သင့်သလဲ? concled code ကိုရှောင်ရှားရန်လက်တွေ့နည်းလမ်းများသင်ပေးပါ

gitbox 2025-05-27

1 ။ MB_Strcut သည် အဘယ်ကြောင့်အမှိုက်ပုံပေါ်လာသနည်း။

mb_structut () mb_substr () နှင့်ကွဲပြားခြားနားသည်။ ၎င်းကိုစာလုံးများမဟုတ်ဘဲယူနစ်များတွင်ကြားဖြတ်နေသည်။ UTF-8 encoded strings များအတွက်တရုတ်ဇာတ်ကောင်သည်များသောအားဖြင့် 3 bytes ကိုယူသည်။ အကယ်. သင်သည်အလယ်၌ byte အနေအထားမှ string ကိုဖြတ်တောက်ပါက၎င်းသည်မပြည့်စုံသောစာလုံးများကိုဖြစ်ပေါ်စေပြီး output တွင်အမှိုက်များသို့မဟုတ်တရားမဝင်သောစာလုံးများကိုပြသနိုင်သည်။

ဥပမာအားဖြင့်:

 $str = 'မင်္ဂလာပါ,ကမ်ာဘ';
$cut = mb_strcut($str, 0, 4, 'UTF-8');
echo $cut;

ဤကုဒ် output ၏ရလဒ်ကိုအမှိုက်ပုံရနိုင်ဖွယ်ရှိသည် MB_SartCut သည် ပထမဆုံး 4 bytes ကိုကြားဖြတ်ပြီးဒုတိယဇာတ်ကောင်၏အစိတ်အပိုင်းကို "ကောင်းသော" ၏အစိတ်အပိုင်းတစ်ခုဖြစ်သော,


2 ။ barbled code ကိုဘယ်လိုရှောင်ရှားမလဲ။

1 ။ အစားထိုးရန် MB_Substr ကို သုံးပါ

အကယ်. သင်သည်အထူးသဖြင့် byte-level control ကိုမလိုအပ်ပါက MB_Substr () ကို အသုံးပြုရန်အကြံပြုသည်။

 $str = 'မင်္ဂလာပါ,ကမ်ာဘ';
$cut = mb_substr($str, 0, 2, 'UTF-8');
echo $cut; // ထုတ်လုပ်ခြင်း:မင်္ဂလာပါ

2 ။ ဇာတ်ကောင်နယ်နိမိတ်များကိုတရားစီရင်ခြင်းနှင့်ကြားဖြတ်

အကယ်. သင်သည် MB_STRANCT (ဥပမာအားဖြင့်သိုလှောင်မှုအရှည်အရှည်ကိုကန့်သတ်ရန်) ကိုသုံးရန်လိုပါက MB_strinlen () နှင့်ဇာတ်ကောင် encoding ကိုပိုမိုတိကျသောထိန်းချုပ်မှုအတွက်ပေါင်းစပ်ရန်လိုအပ်သည်။ သင်ပထမ ဦး ဆုံး MB_Substred () ကို အက္ခရာများရရန်ပထမ ဦး ဆုံးအသုံးပြုနိုင်သော, ထို့နောက် dyte အရှည်ထက်ကျော်လွန်ရှိမရှိဆုံးဖြတ်ရန် strlen () ကို သုံးနိုင်သည်။

 function safe_mb_strcut($string, $start, $length, $encoding = 'UTF-8') {
    $substr = '';
    $i = 0;
    $byteCount = 0;

    while ($i < mb_strlen($string, $encoding)) {
        $char = mb_substr($string, $i, 1, $encoding);
        $charLen = strlen($char);
        if ($byteCount + $charLen > $length) {
            break;
        }
        $substr .= $char;
        $byteCount += $charLen;
        $i++;
    }
    return $substr;
}

$str = 'မင်္ဂလာပါ,ကမ်ာဘ';
$cut = safe_mb_strcut($str, 0, 6); // bytes စုစုပေါင်းအရေအတွက်ဖြစ်ပါတယ်6
echo $cut; // ထုတ်လုပ်ခြင်း:မင်္ဂလာပါ

3 ။ မှန်ကန်သောအတွင်းပိုင်း encoding ကို set up

MB_SERIES function ကိုအသုံးပြုသောအခါ, အတွင်းပိုင်းစာလုံး Encoding သည်သင်မျှော်လင့်ထားသည့်အရာ (UTF-8) ဟုသင်မျှော်လင့်ကြောင်းသတ်မှတ်ရန်သို့မဟုတ်အတည်ပြုရန်သေချာပါစေ။ သင်ကမ္ဘာလုံးဆိုင်ရာသတ်မှတ်ရန်အောက်ပါနည်းလမ်းများကိုသုံးနိုင်သည်။

 mb_internal_encoding('UTF-8');

ထို့အပြင်၎င်းကိုအောက်ပါနည်းလမ်းများဖြင့်စစ်ဆေး။ debugged လုပ်နိုင်သည်။

 echo mb_detect_encoding($str); // string encoding စစ်ဆေးပါ

4 ။ လက်တွေ့ဇာတ်လမ်းဥပမာ - URL ကိုအပိုင်းအခြားကိုရှောင်ကြဉ်ပါ

ဖော်ပြချက်အောက်ရှိ URL ပါ 0 င်သည့်အကြောင်းအရာများကိုသင်စဉ်းစားလိုပါက URL ကိုမဖျက်ဆီးဘဲဘေးကင်းစွာကြားဖြတ်ရန်အထက်ပါနည်းလမ်းကိုသင်အသုံးပြုနိုင်သည်ဆိုပါစို့။ ဥပမာအားဖြင့်:

 $str = 'ပိုမိုသိရှိလိုပါက ကျေးဇူးပြု. ကြည့်ရှုပါ:https://gitbox.net/docs/php-guide.html';
$cut = safe_mb_strcut($str, 0, 40);
echo $cut;

Output သည် URL ဖွဲ့စည်းပုံကိုမဖျက်ဆီးနိုင်ပါ။ အထူးသဖြင့်လူမှုရေးပလက်ဖောင်းအနှစ်ချုပ်,