လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MB_Scrub ကိုအသုံးပြုပြီးနောက်မူလ encoding ကိုမပြောင်းလဲနိုင်အောင်ဘယ်လိုလုပ်ရမလဲ။

MB_Scrub ကိုအသုံးပြုပြီးနောက်မူလ encoding ကိုမပြောင်းလဲနိုင်အောင်ဘယ်လိုလုပ်ရမလဲ။

gitbox 2025-08-13

MAB_SCRUTE strings နှင့်ဆက်ဆံရာတွင် MB_scrub သည် တရားမ 0 င်ဇာတ်ကောင်များပါ 0 င်သောကြိုးများကိုသန့်ရှင်းရေး လုပ်. ပရိုဂရမ်ကိုအကောင်အထည်ဖော်ခြင်းကြောင့်ပရိုဂရမ်ကိုပျက်ပြားစေနိုင်သည့်အလွန်လက်တွေ့ကျသောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ သို့သော် developer များစွာသည် MB_Scrub ကိုအသုံးပြုပြီးနောက်ပြ a နာတစ်ခုနှင့်ကြုံတွေ့ရလိမ့်မည်။ ၎င်းသည်စနစ်၌ရှုပ်ထွေးမှုများကိုရှုပ်ထွေးစေနိုင်သည်, အထူးသဖြင့်သင်၏လျှောက်လွှာသည်တိကျသော encodings (shift_jis, iso-8859-1 စသည်) ။

string ကိုသန့်ရှင်းရေးလုပ်ရန် MB_Scrub ကိုအသုံးပြုပြီးနောက် MB_Scrub ကိုအသုံးပြုပြီး နောက်မပြောင်းလဲဘဲမူရင်း encoding ကို မည်သို့မပြောင်းလဲနိုင်မည်နည်း။

ပြနာခွဲခြမ်းစိတ်ဖြာခြင်း

MB_Scrub ၏အခြေခံအသုံးပြုမှုကိုအရင်ကြည့်ကြစို့။

 <span><span><span class="hljs-variable">$clean</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_scrub</span></span><span>(</span><span><span class="hljs-variable">$dirty_string</span></span><span>);
</span></span>

အကယ်. encoding မသတ်မှတ်ပါက PHP သည်ပုံမှန်စာလုံးပေါင်းကိုပုံမှန်အားဖြင့်အသုံးပြုသည်။ MB_Scrub သည် string ကိုသတ်မှတ်ထားသော encoding သို့ပြောင်းရန်ကြိုးစားလိမ့်မည်။ ပြောင်းလဲခြင်းပျက်ကွက်လျှင်တရားမ 0 င်သောစာလုံးများကို U + FFFD နှင့်အစားထိုးပါ။ သို့သော်ပြန်လာသောတန်ဖိုးကိုမူရင်းကြိုး၏ encoding မဟုတ်ဘဲ၎င်းကိုသင်ဖြတ်သန်းသောအခါသတ်မှတ်ထားသော encoding ဖြစ်သည်။

ထို့ကြောင့်သင်၏ string သည်မူလက shift_jis encoded လုပ်ပါက default mb_scrub ($ str) ဖြင့်၎င်းကိုသန့်ရှင်းပါကသင်က UTF-8 encoded string ကိုဖွင့်ထားပြီး,

ဖြေရှင်းချက် - အတိအလင်းမူရင်း encoding ကိုအတိအလင်းဖော်ပြပါ

ဤပြ problem နာကိုဖြေရှင်းရန် မူရင်းကြိုး၏ encoding ကို ဦး စွာထည့်သွင်းပြီး mb_scrub ဟုခေါ်သောအခါ encoding ကိုအတိအလင်းဖြတ်သန်းရန် လိုအပ်သည်။ ဥပမာအားဖြင့်:

 <span><span><span class="hljs-variable">$original_encoding</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_detect_encoding</span></span><span>(</span><span><span class="hljs-variable">$dirty_string</span></span><span>, </span><span><span class="hljs-title function_ invoke__">mb_list_encodings</span></span><span>(), </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-variable">$clean_string</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_scrub</span></span><span>(</span><span><span class="hljs-variable">$dirty_string</span></span><span>, </span><span><span class="hljs-variable">$original_encoding</span></span><span>);
</span></span>

ဤနည်းအားဖြင့် MB_Scrub သည် string ကိုနားလည်ရန် encoding နည်းလမ်းကိုသိရှိပြီး Reward တန်ဖိုးသည်တူညီသော encoding ကိုလည်းသုံးလိမ့်မည်။

မှတ်ချက် - MB_DETEEct_encoding ၏တိကျမှုသည် string strings contents အပေါ်မူတည်သည်။ encoded list သည်စာဝှက်ထားသည့်စာရင်းများပေါ်ပေါက်လာသည်။ အချို့သောမရေများကိုမှန်ကန်စွာဖော်ထုတ်နိုင်မည်မဟုတ်ပါ။ အခြေအနေအပေါ် အခြေခံ. နယ်ပယ်ကိုရှင်းရှင်းလင်းလင်းသတ်မှတ်ရန်အကြံပြုသည်။

ပိုပြီးတိကျခိုင်မာစွာဥပမာ

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">clean_preserve_encoding</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-keyword">string</span></span></span><span> </span><span><span class="hljs-variable">$input</span></span><span>): </span><span><span class="hljs-title">string</span></span><span> {
    </span><span><span class="hljs-variable">$encoding</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_detect_encoding</span></span><span>(</span><span><span class="hljs-variable">$input</span></span><span>, [</span><span><span class="hljs-string">'SJIS'</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'ISO-8859-1'</span></span><span>, </span><span><span class="hljs-string">'EUC-JP'</span></span><span>], </span><span><span class="hljs-literal">true</span></span><span>);
    </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$encoding</span></span><span>) {
        </span><span><span class="hljs-comment">// encoding ကို detect နိုင်ခြင်းမရှိပါ,ပုံမှန်အားဖြင့်အသုံးပြုခဲ့သည် UTF-8,သို့မဟုတ်ချွင်းချက်ချပစ်</span></span><span>
        </span><span><span class="hljs-variable">$encoding</span></span><span> = </span><span><span class="hljs-string">'UTF-8'</span></span><span>;
    }
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">mb_scrub</span></span><span>(</span><span><span class="hljs-variable">$input</span></span><span>, </span><span><span class="hljs-variable">$encoding</span></span><span>);
}
</span></span>

ဤလုပ်ဆောင်ချက်သည် input string ကို encoding ကိုထိန်းသိမ်းရန်အတတ်နိုင်ဆုံးကြိုးစားလိမ့်မည်။

အပိုဆောင်းအကြံပြုချက်များ

  1. အမြဲတမ်းမူရင်း encoding ကိုမှတ်တမ်းတင်ပါ ။ သင်၏ system သည် encodings များစွာကိုထောက်ပံ့ရန်လိုအပ်ပါကဒေတာစီးဆင်းမှုတစ်ခုစီ၏ encoding ကိုမှတ်တမ်းတင်ရန်အလေ့အကျင့်ကောင်းတစ်ခုဖြစ်သည်။

  2. UTF-8 ကို ဦး စားပေးထားသည် ။ အကယ်. သင်သည် input and output ပတ် 0 န်းကျင်ကိုထိန်းချုပ်နိုင်ပါက UTF-8 encoding ကို encodings မျိုးစုံရောနှောခြင်းကြောင့်ရှုပ်ထွေးမှုကိုရှောင်ရှားရန်အကြံပြုသည်။

  3. စစ်ဆေးမှုအစွန်းရောက်အခြေအနေများ - အထူးသဖြင့်ပြင်ပဒေတာများကိုပြုပြင်သည့်အခါတရားမ 0 င်သော bytes, မှားယွင်းသောချိုးဖောက်ခြင်း,

အကျဉ်းချုပ်

MB_scrub နှင့်တရားမ 0 င်ကြိုးများကိုသန့်ရှင်းရေးပြုလုပ်ခြင်းသည် MB_scrub ၏လုံခြုံစိတ်ချရသောကိုင်တွယ်ရန်အရေးကြီးသည့်နည်းလမ်းတစ်ခုဖြစ်သည်။ ဤပြ problem နာကိုရှောင်ရှားရန် MB_Scrub ကို ခေါ်ဆိုသည့်အခါ MB_Scrub ကိုခေါ်ဆိုသောအခါမူရင်း encoding ကိုရှင်းလင်းစွာဖော်ပြသင့်သည်။

၎င်းသည်ဒေတာရှေ့နောက်ညီညွတ်မှုကိုထိန်းသိမ်းထားရုံသာမက encoding ပြောင်းလဲခြင်း၏ဘေးထွက်ဆိုးကျိုးများကိုလည်းလျော့နည်းစေသည်။ ၎င်းသည်ဘာသာစကားမျိုးစုံနှင့်ပေါင်းစုံသောသဟဇာတဖြစ်သောအပလီကေးရှင်းများဖွံ့ဖြိုးလာသောအခါ၎င်းသည်မရှိမဖြစ်လိုအပ်သောလက်တွေ့စွမ်းရည်တစ်ခုဖြစ်သည်။