PHP တွင် strings strings များပြုလုပ်သောအခါ, တရုတ်, ဂျပန်နှင့်ကိုရီးယားကဲ့သို့သော byte စာလုံးများပါ 0 င်ပါကသမားရိုးကျ strings functions (ဥပမာ submrment ) အမှားများကိုအသုံးပြုသည်။ ဤပြ problem နာကိုရှောင်ရှားရန် PHP သည် Multi-byte string extension Mbstring Multi-byte string extension mbstring ကို ထောက်ပံ့ပေးသည် ။
ဤဆောင်းပါးသည်ဤလုပ်ဆောင်ချက်နှစ်ခုကိုလုံခြုံစွာနှင့်မှန်ကန်စွာကြားဖြတ်ရန်နှင့်မှန်ကန်စွာကြားဖြတ်ရန်မည်သို့ပေါင်းစပ်ရန်မည်သို့ရှင်းပြရန်ဥပမာများကိုအသုံးပြုလိမ့်မည်။
MB_Get_info () ကိုလက်ရှိ Multibyte ပတ်ဝန်းကျင် configuration အချက်အလက်များကိုရရှိရန်အသုံးပြုသည်။ ၎င်းမှတစ်ဆင့်ကျွန်ုပ်တို့သည်အတွင်းပိုင်း encoding ကိုလက်ရှိအသုံးပြုနေသည်ကိုကျွန်ုပ်တို့သိရှိနိုင်သည်။
<?php
$info = mb_get_info();
echo "လက်ရှိအသုံးပြုသော Multibyte encoding သည်:" . $info['internal_encoding'];
?>
ယေဘုယျအားဖြင့်၎င်းသည် Encoding ကို scroding ၏အစတွင် default settings ကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများကိုရှောင်ရှားရန် Scending ကိုအတိအလင်းသတ်မှတ်ရန်အကြံပြုသည်။
<?php
mb_internal_encoding('UTF-8'); // အဖြစ်သတ်မှတ် UTF-8
?>
MB_Substred () သည် string မှသတ်မှတ်ထားသောအရှည်အလျားများ၏ substreings ၏ substres () သည် စာလုံးပေါင်းစုံ encodings များနှင့်အံဝင်ခွင်ကျဖြစ်စေသောဇာတ်ကောင်များအားလုံးကိုရှောင်ကြဉ်ပြီးဇာတ်ကောင်များအားလုံးမှားယွင်းစွာဖော်ပြထားသောဇာတ်ကောင်များအားလုံးကိုရှောင်ရှားသည်။
Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
mb_substr(string $string, int $start, ?int $length = null, ?string $encoding = null): string
parameter သည်ရှင်းလင်းချက်:
$ string : မူရင်း string ကို
$ Start : Start Position (0 မှစ)
$ အရှည် : optional ကို, ကြားဖြတ်အရှည်
$ encoding : optional ကို, encoding ကိုသတ်မှတ်ပါ (ရှင်းရှင်းလင်းလင်းရေးရန်အကြံပြုသည်)
UTF-8-encoded Chinese ဆောင်းပါးမှအကျဉ်းချုပ်အဖြစ်ပထမ ဦး ဆုံးဇာတ်ကောင် 50 ကိုအကျဉ်းချုပ်အဖြစ်ဖြတ်တောက်သည်ဆိုပါစို့။
<?php
mb_internal_encoding('UTF-8'); // encoding ကိုခွဲခြားသတ်မှတ်
$article = "PHP ၎င်းသည်ကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုသော open source multi-protection scripting language ဖြစ်သည်,အထူးသဖြင့်သင့်လျော်သော Web ဖွံ့ဖြိုးပြီးနှင့် embedable HTML အလယ်ပိုင်း。";
// ကြားဖြတ်မတိုင်မီ 50 ဇာတ်ကောင်
$summary = mb_substr($article, 0, 50);
echo "ဆောင်းပါးအကျဉ်းချုပ်:" . $summary;
?>
MB_Substrins ကို Bytes တွင်မဟုတ်ဘဲစာလုံးများဖြင့်ရေးဆွဲထားသည့်အဆိုပြုချက်ရလဒ်များကို garbled မည်မဟုတ်ပါ။
ဥပမာအားဖြင့်အသုံးပြုသူတစ် ဦး သည်မှတ်ချက်ပေးသည့်အခါ, display list တွင်ပထမစာလုံး 30 ကိုသာဖော်ပြလိုပြီး "text text" link ကိုပေးလိုပါသည်။
<?php
mb_internal_encoding('UTF-8');
$comment = "၎င်းသည်အသုံးပြုသူမှတင်ပြသောအလွန်စိတ်လှုပ်ရှားဖွယ်ကောင်းသောထင်မြင်ချက်ဖြစ်သည်,ကျွန်ုပ်တို့သည်အကြောင်းအရာအချို့ကိုသာပြသသည်。";
$preview = mb_substr($comment, 0, 30);
echo $preview . '... <a href="https://gitbox.net/full-comment.php?id=123">စာသားအပြည့်အစုံကိုဖတ်ပါ</a>';
?>
ဤသို့ပြုလုပ်ခြင်းသည်စာမျက်နှာအားအလွန်အကျွံကျေနပ်ရောင့်ရဲမှုကြောင့်ဖောင်းနေရုံသာမကစာလုံးအပြည့်အစုံကိုပြသသည်။
GBK, Big5 စသည်ဖြင့်အခြား encodings များနှင့်သင်ကိုင်တွယ်ပါက MB_ function တစ်ခုစီတွင် encoding parameters များကိုအတိအလင်းဖော်ပြရန်သတိရပါ။
MB_Strlen () ကို conjunction တွင်အသုံးပြုနိုင်သည် (ဥပမာ, စာလုံးရေ 20 သာရှိပါက 30 ကြားဖြတ်ရန်မလိုအပ်ပါ။
HTML ပတ် 0 န်းကျင်တွင်ကြားဖြတ်သည့်အကြောင်းအရာများကိုရှင်းလင်းပြတ်သားစွာပြုလုပ်သောအခါ XSS ပြ problems နာများကိုရှောင်ရှားရန်သင်အာရုံစိုက်သင့်သည်။