Multi-byte encoding (UTF-8, GBK စသည်ဖြင့်) နှင့်ဆက်ဆံရာတွင်, PHP သည်ဤပြ problems နာများကိုကိုင်တွယ်ရန်အချို့သောလုပ်ဆောင်ချက်များကိုပေးသည်။ MB_Substitute_Character သည်အလွန်အသုံးဝင်သောကိရိယာတစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည် string string ကိုအသုံးပြုခြင်းနှင့်အမှိုက်များကိုရှောင်ရှားရန် MB_SBSubstitute_Character ကို မည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။
MB_Substitute_Character သည် PHP Multibyte String Extension (Mbstring) တွင်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ၎င်း၏အဓိကလုပ်ဆောင်ချက်မှာ Multibyte String Operations တွင်မမှန်ကန်တဲ့သို့မဟုတ်တရားမဝင်သောစာလုံးများကိုအစားထိုးရန်အစားထိုးဇာတ်ကောင်ကိုသတ်မှတ်ရန်ဖြစ်သည်။ ဤနည်းအားဖြင့် input string တွင်အသိအမှတ်မပြုသောဇာတ်ကောင်များရှိနေသော်လည်းတရားမ 0 င်ဇာတ်ကောင်များကြုံတွေ့ရသောကြောင့်ပရိုဂရမ်သည် crashed code charbled code ကိုမရရှိနိုင်ပါ။
<span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>([</span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$substitute_char</span></span><span> = MB_SUBSTITUTE_CHARACTER]);
</span></span>$ Exceptitute_char - အခြားရွေးချယ်စရာဇာတ်ကောင်ကိုသတ်မှတ်လေ့ရှိပြီးဇာတ်ကောင် encoded integer value တစ်ခုဖြစ်နိုင်တယ်, ဒါမှမဟုတ်စဉ်ဆက်မပြတ် mb_substitute_character ပုံမှန်တန်ဖိုးသည် mb_substitute_character , ဆိုလိုသည်မှာပုံမှန်အစားထိုးဇာတ်ကောင် (များသောအားဖြင့်မေးခွန်းအမှတ်အသား ") ကိုဆိုလိုသည်။
ဇာတ်ကောင်ကြားဖြတ်ခြင်း ( MB_Substrstrrstr ) သို့မဟုတ်ဇာတ်ကောင်ရှာဖွေရေး (MB_STRPOS) သို့မဟုတ်ဇာတ်ကောင်ရှာဖွေရေး ( MB_STRPOS ) သို့မဟုတ်ဇာတ်ကောင်ရှာဖွေရေး (MB_STRPOS) သို့မဟုတ်ဇာတ်ကောင်ရှာဖွေရေး (MB_STRPOS) ကိုဖွင့်သောအခါ, ဘာဖြစ်လို့လဲဆိုတော့ဇာတ်ကောင်တိုင်းဟာ bytes တူညီတဲ့အရေအတွက်မှာမရှိတော့ဘူး။ အကယ်. intercept သို့မဟုတ် operation ကိုမှန်ကန်သော bytes ၏မှန်ကန်သောအရမလုပ်ဆောင်ပါကဇာတ်ကောင်၏အစိတ်အပိုင်းတစ်ခုမှာအမှားအယွင်းများဖြင့်ဖြတ်တောက်နိုင်ပြီးအမှိုက်များကုဒ်ကိုရထားသည်။
ကြိုးတွေကိုထုတ်ယူတဲ့အခါ carbled သို့မဟုတ် truncated ပြ problem နာမရှိဘူးဆိုတာသေချာအောင်လုပ်တဲ့အခါ MB_SBSubstitute_Character ကိုအစားထိုးဖို့နဲ့တရားမ 0 င်တဲ့ဇာတ်ကောင်တွေကိုအစားထိုးဖို့အတွက် MB_SBSubstitute_character ကိုသုံးနိုင်တယ်။ ဤနည်းအားဖြင့်ပရိုဂရမ်သည်ဆက်လက်လုပ်ဆောင်နိုင်ရုံသာမက Output Strings သည်ပိုမိုရင်းနှီးဖော်ရွေမှုရှိလိမ့်မည်။
<span><span><span class="hljs-comment">// မေးခွန်းအမှတ်အသားမှအခြားရွေးချယ်စရာဇာတ်ကောင်ထား“?”</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(<span class="hljs-string">'?");
// နမူနာ string ကို
$string = "Hello, မင်္ဂလာပါ,ကမ်ာဘ!";
// ငါတို့သုံးမယ်ဆိုပါစို့ gbk encoded string ကို,Multibyte ကြားဖြတ်လုပ်ဆောင်ခြင်း
echo mb_substr($string, 0, 10, '</span>GBK<span class="hljs-string">');
</span></span></span>ဤကုဒ်တွင် string ကိုမှန်ကန်စွာမပြုလုပ်နိုင်ပါကစနစ်သည်အမှားတစ်ခုကိုပစ်ချခြင်းသို့မဟုတ်အမှိုက်များကိုတိုက်ရိုက်ဖွင့်ထားသည့်မေးခွန်းအမှတ်အသား ("?") ကိုအသုံးပြုသည်။
ပြသထားသည့်အစားထိုးစာလုံးများကိုထပ်မံထိန်းချုပ်ရန်အစားထိုးအက်ခရာများ၏ကိန်းဂဏန်းများကိုသင်အသုံးပြုနိုင်သည်။ ဥပမာ, Unicode-encoded "?" ဇာတ်ကောင်အစားတရားမ 0 င်အက္ခရာများအစား။
<span><span><span class="hljs-comment">// အခြားရွေးချယ်စရာဇာတ်ကောင်ကိုသတ်မှတ်ပါUnicodeencoded“?”(U+FFFD)</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-number">0xFFFD</span></span><span>);
</span><span><span class="hljs-comment">// နမူနာ string ကို</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"Hello, မင်္ဂလာပါ,world!"</span></span><span>;
</span><span><span class="hljs-comment">// အသုံးပြု UTF-8 ကြားဖြတ်ဘို့ encoding</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_substr</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
</span></span>ဤဥပမာတွင်တရားမဝင်သို့မဟုတ်အသိအမှတ်မပြုသောဇာတ်ကောင်များကို "" ဖြင့်အစားထိုးလိမ့်မည်။ ပရိုဂရမ်သည်မအောင်မြင်သောဇာတ်ကောင်များနှင့်ကြုံတွေ့ရသည့်တိုင်ထိုအစီအစဉ်ကိုစိတ်ရှုပ်ထွေးစေနိုင်သည့်တိုင် ဆက်လက်. လျစ်လျူရှုနိုင်သည်။
Multi-byte strings များကိုကြားဖြတ်သောအခါ MB_substrtraction function ကို MB_Substitution_character နှင့် တွဲဖက်. အသုံးပြုနိုင်သည်။
<span><span><span class="hljs-comment">// အခြားရွေးချယ်စရာဇာတ်ကောင် setting</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-string">'?'</span></span><span>);
</span><span><span class="hljs-comment">// ကျွန်ုပ်တို့တွင် Multibyte ဇာတ်ကောင်များပါ 0 င်သည့် string တစ်ခုရှိသည်ဆိုပါစို့</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"ဒါကစမ်းသပ်မှုစာသားပါ"</span></span><span>;
</span><span><span class="hljs-comment">// ပထမ ဦး ဆုံးဇာတ်ကောင်ဆယ်လုံးကြားဖြတ်</span></span><span>
</span><span><span class="hljs-variable">$sub_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substr</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">10</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$sub_string</span></span><span>; </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း “ဒါကစမ်းသပ်မှုတစ်ခုပါ”</span></span><span>
</span></span>အကယ်. သင်သည် string ကိုကြားဖြတ်ရန်ပုံမှန် substrstr function ကိုတိုက်ရိုက်အသုံးပြုပါက, ဤအခြေအနေကို MB_substrintr. နှင့်သင့်လျော်သောအစားထိုးစာလုံးများကိုသတ်မှတ်ပြီးနောက်ရှောင်ရှားနိုင်သည်။
ဇာတ်ကောင် Encoding Encoding Encoding ပြောင်းလဲခြင်း, ဤအချိန်တွင်ပြောင်းလဲထားသော string သည် carbled code မထုတ်လုပ်နိုင်ရန်အတွက် MB_SBSubstitute_Character ကိုလည်းအသုံးပြုနိုင်သည်။
<span><span><span class="hljs-comment">// အခြားရွေးချယ်စရာဇာတ်ကောင် setting</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mb_substitute_character</span></span><span>(</span><span><span class="hljs-string">'?'</span></span><span>);
</span><span><span class="hljs-comment">// ကျနော်တို့တစ် ဦး လွှဲပြောင်းချင်တယ်ဆိုပါစို့UTF-8string ကိုကူးပြောင်းGBK</span></span><span>
</span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"ဒါကအစိတ်အပိုင်းတစ်ခုပါUTF-8encoded string ကို"</span></span><span>;
</span><span><span class="hljs-variable">$converted_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-string">'GBK'</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$converted_string</span></span><span>;
</span></span>ကူးပြောင်းခြင်းလုပ်ငန်းစဉ်အတွင်း ပြောင်းလဲ. မရနိုင်သောဇာတ်ကောင်များကြုံတွေ့ရလျှင်ပင်အခြားရွေးချယ်စရာဇာတ်ကောင်များသတ်မှတ်ခြင်းအားဖြင့်ပြောင်းလဲခြင်းလုပ်ငန်းစဉ်တစ်ခုလုံးကိုထိခိုက်လိမ့်မည်မဟုတ်ပါ။
MB_Substitute_Character သည်အလွန်လက်တွေ့ကျသောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ Multi-byte string operations များကိုပြုလုပ်သောအခါ MB_SBSubstitute_Character ကို မှန်ကန်စွာအသုံးပြုသောအခါ, စာလုံးအကြားရိုက်ကူးမှု, encoding ပြောင်းလဲခြင်း, သို့မဟုတ်ဇာတ်ကောင်ရှာဖွေရေး, MB_SBSHCLE_CHARTANCTICTICTION သည်အဓိကအားဖြင့်ကျောက်တုံးကျောက်တုံးပြ problems နာများကိုဖြေရှင်းရန်အရေးကြီးသောကိရိယာတစ်ခုဖြစ်သည်။