လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MB_Get_info string ပြောင်းခြင်းစစ်ဆင်ရေးအတွက်ပံ့ပိုးမှု

MB_Get_info string ပြောင်းခြင်းစစ်ဆင်ရေးအတွက်ပံ့ပိုးမှု

gitbox 2025-05-11

Multi-byte strings (UTF-8 encoded encoded encoded တရုတ်, ဂျပန်, ကိုးရီးယားစသကဲ့သို့ပင်သာမန် strings လုပ်ဆောင်ချက်များသည်ပုံမှန်အားဖြင့်ဇာတ်ကောင်များ၏နယ်နိမိတ်များကိုမှန်ကန်စွာခွဲခြားသတ်မှတ်ရန်ပျက်ကွက်တတ်သည်။ ၎င်းသည်အထူးသဖြင့်ပြောင်းပြန် string ကိုစစ်ဆင်ရေးလုပ်ဆောင်သောအခါမှန်ကန်သည်။ ဤဆောင်းပါးသည် MB_Get_info မှတစ်ဆင့် Multibyte string ကို multibyte strings ၏ encoding information ကိုမည်သို့ရယူရမည်ကိုလေ့လာလိမ့် မည်

Multi-byte strings ၏စိန်ခေါ်မှု

PHP ၏ built-in လုပ်ထုံးလုပ်နည်းများသည် ASCII အက္ခရာများကိုသာကိုင်တွယ်နိုင်ပြီး ASCII အက္ခရာများကိုသာကိုင်တွယ်နိုင်သည် ဥပမာ -

 $str = "မင်္ဂလာပါ,ကမ်ာဘ";
echo strrev($str); // output garbled code

အကြောင်းပြချက်မှာ strrev သည် "ဇာတ်ကောင်" သည်မည်မျှ bytes မည်မျှရှိသည်ကိုမသိပါ။

ဖြေရှင်းချက် - Mbstring function ကိုသုံးပါ

PHP ၏ Mbstring extension သည် multibyte strings များကိုကိုင်တွယ်သောလုပ်ဆောင်ချက်များကိုစုဆောင်းပေးသည်။ လက်ရှိ Multibyte configuration ကိုအတည်ပြုရန် MB_GEGT_InFO () ကို သုံးနိုင်သည်

1 ။ လက်ရှိ Multibyte ပတ်ဝန်းကျင်ကိုရယူပါ

 $info = mb_get_info();
print_r($info);

၎င်းသည် internal encoding ( internal_encoding ) အပါအ 0 င်ခင်းကျင်းခြင်း (internal_encoding) အပါအ 0 င်ခင်းကျင်းမှုကိုပြန်ပေးလိမ့်မည်။

 Array
(
    [internal_encoding] => UTF-8
    [http_input] => pass
    [http_output] => pass
    ...
)

2 ။ string ကိုပြောင်းခြင်းလုပ်ဆောင်ချက်

လက်ရှိ encoding အချက်အလက်အပေါ် အခြေခံ. string ကိုလုံခြုံစွာ invertt လုပ်နိုင်သည်။

 function mb_strrev($str, $encoding = null) {
    if ($encoding === null) {
        $encoding = mb_internal_encoding();
    }
    
    $length = mb_strlen($str, $encoding);
    $reversed = '';
    
    for ($i = $length - 1; $i >= 0; $i--) {
        $reversed .= mb_substr($str, $i, 1, $encoding);
    }
    
    return $reversed;
}

$str = "မင်္ဂလာပါ,ကမ်ာဘ";
echo mb_strrev($str); // ထုတ်လုပ်ခြင်း:ကမ်ာဘ,အိုကေ

ဤဥပမာတွင်ကျွန်ုပ်တို့သည် MB_Internal_encoding () ( mb_encoding field) ကို အသုံးပြုသည်။

Dynamic encoding ပံ့ပိုးမှု

အကယ်. သင်သည်ကွဲပြားခြားနားသောအရင်းအမြစ်များမှကြိုးများကိုကိုင်တွယ်ဖြေရှင်းနေပါက, encoding သည်ယူနီဖောင်းမဖြစ်နိူင်ပါ။ MB_Detect_encoding () ကို mb_convert_encoding () ကိုသုံးနိုင်သည်။

 $str = file_get_contents('https://gitbox.net/data.txt');
$encoding = mb_detect_encoding($str, mb_detect_order(), true);

if ($encoding !== 'UTF-8') {
    $str = mb_convert_encoding($str, 'UTF-8', $encoding);
}

echo mb_strrev($str);

ဤနည်းအားဖြင့်အသုံးပြုသူများသည် GB2312, Big5 သို့မဟုတ် UTF-8 encoded text ကိုပြုလုပ်ပါစေကိစ္စရပ်ဖြစ်စေ, ၎င်းကိုစည်းလုံးသော encoding ထဲသို့ပြောင်းလဲနိုင်သည်။

အကျဉ်းချုပ်

MB_GET_INFO () ကိုယ်တိုင်သည် string inversion inversion လုပ်ငန်းများတွင်တိုက်ရိုက်ပါ 0 င်ခြင်းမဟုတ်သော်လည်း၎င်းသည်အရေးပါသော encoding information များကိုထောက်ပံ့ပေးသည် encoding ကိုမှန်ကန်စွာရယူပြီး MB_strlen () နှင့် mb_substrart () ပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် multibyte strings များကိုလုံခြုံစွာ invert နှင့် reliatly verty invert လုပ်နိုင်သည်။

၎င်းသည်နိုင်ငံတကာသို့ကျင့်သုံးခြင်း, သုံးစွဲသူထည့်သွင်းခြင်းသို့မဟုတ်အာရှဈေးကွက်အတွက်ဆောက်လုပ်ရေးစနစ်များကိုဆောက်လုပ်ရန်အတွက်အထူးသဖြင့်အရေးကြီးသည်။ အကယ်. သင်သည်ထိုကဲ့သို့သောစီမံကိန်းကိုတည်ဆောက်နေပါက Mbstring extension ကို enable extension ကို enable လုပ်ပြီး encoded အချက်အလက်များကိုရယူခြင်းနှင့်အသုံးပြုခြင်းကိုဂရုပြုပါ။