လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ICONV_Substr မှာအမှားမပါဘဲအထူးအက္ခရာများကိုဘယ်လိုကြားဖြတ်ရမလဲ။ ကြိုးများ၌ရှုပ်ထွေးသောအခြေအနေများနှင့်မည်သို့ကိုင်တွယ်ရမည်ကိုသင်ပေးပါ

ICONV_Substr မှာအမှားမပါဘဲအထူးအက္ခရာများကိုဘယ်လိုကြားဖြတ်ရမလဲ။ ကြိုးများ၌ရှုပ်ထွေးသောအခြေအနေများနှင့်မည်သို့ကိုင်တွယ်ရမည်ကိုသင်ပေးပါ

gitbox 2025-06-27

[ICONV_Substr မှာအမှားမပါဘဲအထူးအက္ခရာများကိုကြားဖြတ်နည်း။ ကြိုးများ၌ရှုပ်ထွေးသောအခြေအနေများနှင့်ဆက်ဆံရန်သင့်အားသင်ပေးပါ။ ]

PHP ပရိုဂရမ်တွင်အထူးသဖြင့် Strings Multibyte ဇာတ်ကောင်များပါ 0 င်သည့်အကျင့်စာ encoding နှင့် string operations များပါ 0 င်သည့်လုပ်ငန်းများကိုကျွန်ုပ်တို့မကြာခဏကိုင်တွယ်လေ့ရှိသည်။ iconv_substred () strings များကဲ့သို့သောလုပ်ဆောင်ချက်များကိုအသုံးပြုသောအခါသင်သတိမပြုမိပါကသတိမပြုမိပါကအထူးသဖြင့်အထူးအက္ခရာများ, ဂျပန်, ဂျပန်, ထို့ကြောင့် iconv_substr () ကို မည်သို့မှန်ကန်စွာသုံးနိုင်ဖွယ်ရှိ encoding ပြ problems နာများကြောင့်ဖြစ်ပေါ်လာသောအမှားများကိုရှောင်ရှားရန် developer များကကျွမ်းကျင်ရန်လိုအပ်သည်။

1 ။ iconv_substr () function ကိုခြုံငုံသုံးသပ်ချက်

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 , စသည်တို့ပါဝင်သည်။

2 ။ ပြ problem နာ - အထူးအက္ခရာများကိုကြားဖြတ်ခြင်းကအမှားအယွင်းများဖြစ်ပေါ်စေသည်

အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်အထူးအက္ခရာများသို့မဟုတ်ဘက်စုံသည်းခြေစာလုံးများပါ 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 င်သောကြောင့်ဖြစ်သည်။

3 ။ ဖြေရှင်းနည်း - ဇာတ်ကောင်များမခွဲခြားပါစေ

အထက်ဖော်ပြပါပြ problems နာများကိုရှောင်ရှားရန် string ကိုကြားဖြတ်သောအခါ string ၏ဇာတ်ကောင်များသည်ကွဲသွားလိမ့်မည်မဟုတ်ကြောင်းသေချာစေရန်လိုအပ်သည်။ ထိုသို့ပြုလုပ်ရန်ကျွန်ုပ်တို့သည် Multibyte အက္ခရာများမှန်ကန်စွာကြားဖြတ်နေကြောင်းသေချာစေရန်အောက်ပါနည်းလမ်းများကိုလုပ်ဆောင်နိုင်သည်။

3.1 ။ iconv_substr () အစား mb_substr () ကိုသုံးပါ။

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>

3.2 ။ ကိုယ်တိုင်ဇာတ်ကောင်အနေအထားကိုချိန်ညှိပါ

အကယ်. သင်သည် 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> &lt; </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>

3.3 ။ ကွဲပြားခြားနားသော coding ပြ problems နာများကိုကိုင်တွယ်

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>

3.4 ။ ဇာတ်ကောင် set ကိုပံ့ပိုးမှုစစ်ဆေးပါ

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>

4 ။ အကျဉ်းချုပ်

iconv_substr () သည် string interception ကိုကိုင်တွယ်ရန်အတွက်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ သင့်လျော်သော encoding ကိုရွေးချယ်ခြင်းနှင့်သင့်တော်သော PHP လုပ်ဆောင်ချက်များကိုချိန်ညှိ ခြင်း နှင့်သင့်လျော်သော PHP လုပ်ဆောင်ချက်များကိုအသုံးပြုခြင်းအားဖြင့်,

ဤလုပ်ဆောင်မှုများကိုမှန်ကန်သောနားလည်မှုနှင့်အသုံးပြုခြင်းကိုအသုံးပြုခြင်းသည်ဘာသာစကားမျိုးစုံအထောက်အပံ့နှင့်ရှုပ်ထွေးသောဇာတ်ကောင်အစုံများနှင့်ဆက်ဆံရာတွင်ဖြစ်နိုင်ချေရှိသောအမှားအယွင်းများကိုရှောင်ရှားနိုင်ပြီးသင်၏ program ကိုအားကောင်းစေပြီးထိရောက်စေသည်။