[ICONV_Substr မှာအမှားမပါဘဲအထူးအက္ခရာများကိုကြားဖြတ်နည်း။ ကြိုးများ၌ရှုပ်ထွေးသောအခြေအနေများနှင့်ဆက်ဆံရန်သင့်အားသင်ပေးပါ။ ]
PHP ပရိုဂရမ်တွင်အထူးသဖြင့် Strings Multibyte ဇာတ်ကောင်များပါ 0 င်သည့်အကျင့်စာ encoding နှင့် string operations များပါ 0 င်သည့်လုပ်ငန်းများကိုကျွန်ုပ်တို့မကြာခဏကိုင်တွယ်လေ့ရှိသည်။ iconv_substred () strings များကဲ့သို့သောလုပ်ဆောင်ချက်များကိုအသုံးပြုသောအခါသင်သတိမပြုမိပါကသတိမပြုမိပါကအထူးသဖြင့်အထူးအက္ခရာများ, ဂျပန်, ဂျပန်, ထို့ကြောင့် iconv_substr () ကို မည်သို့မှန်ကန်စွာသုံးနိုင်ဖွယ်ရှိ encoding ပြ problems နာများကြောင့်ဖြစ်ပေါ်လာသောအမှားများကိုရှောင်ရှားရန် developer များကကျွမ်းကျင်ရန်လိုအပ်သည်။
iconv_substr () သည် PHP တွင် strings ကိုကြားဖြတ်ရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ ၎င်းသည်မတူညီသောဇာတ်ကောင်အစုံအကြားပြောင်းလဲခြင်းနှင့်လုပ်ငန်းများကိုထောက်ပံ့သည်။ Substrstr () function ကိုမတူဘဲ iconv_substr () သည် Multibyte ဇာတ်ကောင်အစုံ (UTF-8, GB2312 စသဖြင့်) multibyte character set များကိုမှန်ကန်စွာကိုင်တွယ်နိုင်သည်။
လုပ်ဆောင်ချက်၏အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -
<span><span><span class="hljs-title function_ invoke__">iconv_substr</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$start</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$length</span></span><span> = ?, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$charset</span></span><span> = ?): </span><span><span class="hljs-keyword">string</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>
$ str : ကြားဖြတ်ခံရဖို့ string ကို။
$ Start : Intercept ၏ start အနေအထား။
$ အရှည် : ကြားဖြတ်သည့်အရှည်, default တန်ဖိုးသည် null ဖြစ်ပါတယ်။
$ charset : character set ကိုလက်ရှိပတ်ဝန်းကျင်အပေါ် အခြေခံ. ပုံမှန်အားဖြင့်တရားစီရင်ခြင်းခံရလိမ့်မည်။ အသုံးအများဆုံးမှာ UTF-8 , GB2312 , စသည်တို့ပါဝင်သည်။
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်အထူးအက္ခရာများသို့မဟုတ်ဘက်စုံသည်းခြေစာလုံးများပါ 0 င်သည့်ကြိုးများကိုကျွန်ုပ်တို့ကြုံတွေ့ရမည်ဖြစ်သည်။ အကယ်. သင်သည် iconv_substred () ကို ဤကြိုးကိုကြားဖြတ်ရန်တိုက်ရိုက်အသုံးပြုပါကအောက်ပါပြ problems နာများပေါ်ပေါက်လာနိုင်သည်။
ကြားဖြတ်သည့်ဇာတ်ကောင်များခွဲထားသည် ။ Multi-byte စာလုံးများကိုတစ်ဝက်အတွင်းကြားဖြတ်ထားပြီး,
ကိုက်ညီမှုမရှိသော encoding : input string နှင့် target character set သည်ကိုက်ညီမှုရှိသည့်အခါကကြားဖြတ်ယူမှုကိုမဖြစ်နိုင်ပါ။
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"ဒီမှာဥပမာ string ကိုဖြစ်ပါတယ်"</span></span><span>;
</span><span><span class="hljs-variable">$subStr</span></span><span> = </span><span><span class="hljs-title function_ invoke__">iconv_substr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">6</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">$subStr</span></span><span>; </span><span><span class="hljs-comment">// ၎င်းသည် garbled သို့မဟုတ်မမှန်ကန်သောရလဒ်များထွက်ပေါ်လာနိုင်သည်</span></span><span>
</span></span>
ဤဥပမာတွင် string မှတတိယဇာတ်ကောင်မှစဇာတ်ကောင်မှစဇာတ်ကောင်မှ စ. ဇာတ်ကောင် 6 လုံးကို "ဤဥပမာသည် string is" ဖြစ်သည် ။ ဘာဖြစ်လို့လဲဆိုတော့ string တွေမှာများသောအားဖြင့် multibytes များသောအားဖြင့် multibytes များသောအားဖြင့်မပြည့်စုံသောစာလုံးများကိုကြားဖြတ်နိုင်ပြီးမမှန်ကန်သော output ကိုကြားဖြတ်နိုင်သည့်အနေဖြင့်တရုတ်အက္ခရာများပါ 0 င်သောကြောင့်ဖြစ်သည်။
အထက်ဖော်ပြပါပြ problems နာများကိုရှောင်ရှားရန် string ကိုကြားဖြတ်သောအခါ string ၏ဇာတ်ကောင်များသည်ကွဲသွားလိမ့်မည်မဟုတ်ကြောင်းသေချာစေရန်လိုအပ်သည်။ ထိုသို့ပြုလုပ်ရန်ကျွန်ုပ်တို့သည် Multibyte အက္ခရာများမှန်ကန်စွာကြားဖြတ်နေကြောင်းသေချာစေရန်အောက်ပါနည်းလမ်းများကိုလုပ်ဆောင်နိုင်သည်။
MB_Substr () function ကို MB_substred () function ကိုထောက်ပံ့ပေးသည်။ သင်၏ပတ် 0 န်းကျင်သည် Mbstring extension ကိုအထောက်အကူပြုပါက MB_Substr () ကို သင်အသုံးပြုနိုင်သည်။
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"ဒီမှာဥပမာ string ကိုဖြစ်ပါတယ်"</span></span><span>;
</span><span><span class="hljs-variable">$subStr</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">6</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">$subStr</span></span><span>; </span><span><span class="hljs-comment">// မှန်ကန်သော output ကို "ဥပမာတစ်ခု"</span></span><span>
</span></span>
အကယ်. သင်သည် Iconv_substred () ကို သုံးရန်လိုပါကဇာတ်ကောင်တစ်ဝက်အလယ်၌ကြားဖြတ်မထားကြောင်းသေချာစေရန်အက်ခရာများ၏အနေအထားကိုစစ်ဆေးနိုင်သည်။ ဒီလိုလုပ်ဖို့ iconv_strst_strinlen () ကိုသုံးပြီး character-by-character checks တွေနဲ့ချိန်ညှိမှုကိုလုပ်ဆောင်နိုင်တယ်။
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"ဒီမှာဥပမာ string ကိုဖြစ်ပါတယ်"</span></span><span>;
</span><span><span class="hljs-variable">$start</span></span><span> = </span><span><span class="hljs-number">3</span></span><span>;
</span><span><span class="hljs-variable">$length</span></span><span> = </span><span><span class="hljs-number">6</span></span><span>;
</span><span><span class="hljs-comment">// ဇာတ်ကောင်စုစုပေါင်းအရှည်ရယူပါ</span></span><span>
</span><span><span class="hljs-variable">$strLength</span></span><span> = </span><span><span class="hljs-title function_ invoke__">iconv_strlen</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-string">"UTF-8"</span></span><span>);
</span><span><span class="hljs-comment">// Intercept Start Position သည် Multibyte ဇာတ်ကောင်၏အလယ်ဖြစ်သည်ကိုဆုံးဖြတ်ပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$start</span></span><span> < </span><span><span class="hljs-variable">$strLength</span></span><span>) {
</span><span><span class="hljs-variable">$subStr</span></span><span> = </span><span><span class="hljs-title function_ invoke__">iconv_substr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-variable">$start</span></span><span>, </span><span><span class="hljs-variable">$length</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">$subStr</span></span><span>; </span><span><span class="hljs-comment">// output ကိုမှန်ကန်သောကြားဖြတ်ရလဒ်</span></span><span>
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"start အနေအထား string ကိုအကွာအဝေးအပြင်ဘက်မှာဖြစ်ပါတယ်"</span></span><span>;
}
</span></span>
string တစ်ခု၏ encoding သည် target encoding နှင့်ကိုက်ညီမှုမရှိပါက ICONV_Substr () ကိုမှားယွင်းစွာအသုံးပြုခြင်းကိုဖြစ်စေနိုင်သည်။ သင်အသုံးပြုနေသော string encoding iconv_substred () ကို iconv_substr () ၏ပစ်မှတ် encoding နှင့်ကိုက်ညီကြောင်းသေချာအောင်မတိုက်ဆိုင်မှုကိုရှောင်ရှားရန်။
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"ဒီမှာဥပမာ string ကိုဖြစ်ပါတယ်"</span></span><span>;
</span><span><span class="hljs-variable">$subStr</span></span><span> = </span><span><span class="hljs-title function_ invoke__">iconv_substr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">6</span></span><span>, </span><span><span class="hljs-string">"GB2312"</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$subStr</span></span><span>; </span><span><span class="hljs-comment">// အဆိုပါ output ရလဒ်ကိုပစ်မှတ် encoding အရသိရသည်မှန်ကန်စွာပြသသည်</span></span><span>
</span></span>
encoding ကိုကိုင်တွယ်တဲ့အခါ, သင်အသုံးပြုနေတဲ့ဇာတ်ကောင်သတ်မှတ်ချက်ကိုထောက်ခံကြောင်းသေချာအောင်လုပ်ပါ။ ဥပမာအားဖြင့် iconv_substr () စနစ်ကထောက်ခံသည့်ဇာတ်ကောင်အပေါ်မူတည်သည်။ အကယ်. ဇာတ်ကောင်သတ်မှတ်ချက်ကိုမပံ့ပိုးပါကအမှားတစ်ခုဖြစ်ပေါ်စေလိမ့်မည်။ ထို့ကြောင့်အမှန်တကယ်အသုံးပြုမှုတွင်မှန်ကန်သော encoding format ကိုလိုအပ်သလိုရွေးချယ်သင့်သည်။
<span><span><span class="hljs-variable">$str</span></span><span> = </span><span><span class="hljs-string">"ဒီမှာဥပမာ string ကိုဖြစ်ပါတယ်"</span></span><span>;
</span><span><span class="hljs-variable">$subStr</span></span><span> = </span><span><span class="hljs-title function_ invoke__">iconv_substr</span></span><span>(</span><span><span class="hljs-variable">$str</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">6</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">$subStr</span></span><span>; </span><span><span class="hljs-comment">// မှန်ကန်သောရလဒ် output ကို</span></span><span>
</span></span>
iconv_substr () သည် string interception ကိုကိုင်တွယ်ရန်အတွက်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ သင့်လျော်သော encoding ကိုရွေးချယ်ခြင်းနှင့်သင့်တော်သော PHP လုပ်ဆောင်ချက်များကိုချိန်ညှိ ခြင်း နှင့်သင့်လျော်သော PHP လုပ်ဆောင်ချက်များကိုအသုံးပြုခြင်းအားဖြင့်,
ဤလုပ်ဆောင်မှုများကိုမှန်ကန်သောနားလည်မှုနှင့်အသုံးပြုခြင်းကိုအသုံးပြုခြင်းသည်ဘာသာစကားမျိုးစုံအထောက်အပံ့နှင့်ရှုပ်ထွေးသောဇာတ်ကောင်အစုံများနှင့်ဆက်ဆံရာတွင်ဖြစ်နိုင်ချေရှိသောအမှားအယွင်းများကိုရှောင်ရှားနိုင်ပြီးသင်၏ program ကိုအားကောင်းစေပြီးထိရောက်စေသည်။