MB_STRPOS () function ၏အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
<span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$offset</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$encoding</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>): </span><span><span class="hljs-keyword">int</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>$ haystack : ပစ်မှတ် string ကို။
$ အပ် - တွေ့ရှိရမည့်အလွှာ။
$ offset : ရှာဖွေမှု၏စတင်အနေအထား, ပုံမှန်သည် 0 ဖြစ်ပါတယ်။
$ encoding : ဇာတ်ကောင် encoding ။ ပုံမှန်အားဖြင့် PHP သည် System ၏လက်ရှိဇာတ်ကောင် encoding ကိုအလိုအလျောက်ရွေးချယ်လိမ့်မည်။
mb_strpos () function သည် strows () နှင့်ကွဲပြားသည်။ ၎င်းသည် Multi-byte-Safe ဖြစ်ပြီးမတူညီသောဇာတ်ကောင်အစုံများ၏ကြိုးများကိုကိုင်တွယ်ရန်သင့်တော်သည်။ အထူးသဖြင့် UTF-8, GBK, Big5 စသည့်စာလုံးတစ်လုံးကိုကိုင်တွယ်ရန်လိုအပ်သောအခါ MB_Stropos () သည်အထူးအရေးကြီးသည်။
ပြ the နာ၏အဓိကအချက်မှာ MB_Strpos () ကွဲပြားခြားနားသော encodings ကိုကိုင်တွယ်သည့်အခါတွင်မတူကွဲပြားသောအနေအထား၏ရလဒ်မှာမတူပါ။ ဤပြ problem နာ၏ဘုံပေါ်ထွန်းခြင်းမှာတူညီသောကြိုးနှင့်ရှာဖွေရေးအက္ခရာများကိုအသုံးပြုခြင်း, သို့သော်ကွဲပြားခြားနားသောဇာတ်ကောင် encodings အောက်တွင်ပြန်လာသည့်အနေအထားအညွှန်းကိန်းသည်အတူတူပင်မဟုတ်ပါ။ ဘာကြောင့်ဒီလိုဖြစ်ရတာလဲ
အက်ခရာ encoding နှင့် byte အရှည်:
အက်ခရာ encoding သည်မှတ်ဥာဏ်ရှိသည့် bytes အရေအတွက်ကိုဆုံးဖြတ်သည်။ UTF-8 encoding သည်စာလုံးတစ်လုံးလျှင် 1 မှ 4 မှ 4 အထိပါ 0 င်နိုင်သည်။ MB_STRPOS () သည် ဇာတ်ကောင် encoding အပေါ် အခြေခံ. ဇာတ်ကောင်များကို အခြေခံ. ဇာတ်ကောင်များကိုရှာဖွေသည်။
Multi-byte ဇာတ်ကောင်အပြောင်းအလဲနဲ့
Multibyte ဇာတ်ကောင်များထုတ်လုပ်သည့်အခါ MB_STRPOS () MB_Strpos () သည် မှတ်ဥာဏ်အရေအတွက်မဟုတ်ဘဲမှတ်ဉာဏ်ရှိဇာတ်ကောင်များ၏အမှန်တကယ်အရှည်ကိုထည့်သွင်းစဉ်းစားသည်။ UTF-8 encoding အောက်ရှိတရုတ်ဇာတ်ကောင်ကိုသင်ရှာဖွေနေပါက (ဥပမာ "" သင် "" သင် ") သည် 3 bytes 3 ခုယူနိုင်သည်။ GBK encoding အောက်တွင်၎င်းသည် 2 bytes သာကြာသည်။ ထို့ကြောင့် UTF-8 encoding အောက်တွင် string အတွက်ဇာတ်ကောင်များ၏အနေအထားကို GBK encoding အောက်ထက်ပိုမို bytes များကို offset ဖြစ်နိုင်သည်။
coding ရှေ့နောက်မညီ၏သက်ရောက်မှုများ:
MB_STRPOS () သည် default encoding အောက်တွင်အလုပ်လုပ်သည်, string encoding encoding နှင့် lookup လုပ်သည့်ဇာတ်ကောင်များသည်ကိုက်ညီမှုမရှိပါက၎င်းသည်တိကျသောပြန်လာတန်ဖိုးများရှိနိုင်သည်။ ဤကိစ္စတွင် string ကို၏ byte သရုပ်ဆောင်ခြင်းနှင့်ရှာဖွေရေးဇာတ်ကောင်များကွဲပြားခြားနားသည်, အနေအထားတွက်ချက်မှုတွင်သွေဖည်ခြင်းများဖြစ်ပေါ်စေသည်။
string နှင့်ဇာတ်ကောင် encoding တသမတ်တည်းဖြစ်ကြောင်းသေချာပါစေ:
လက်ရှိ PHP script ၏ပုံမှန်ဇာတ်ကောင် encoding ကိုကြည့်ရှုရန် MB_Internal_encoding () function ကိုသုံးပါ။ string ၏ encoding ကိုပြောင်းလဲရန် MB_ConVert_encoding () function ကိုသုံးနိုင်သည်။ ဥပမာအားဖြင့်:
<span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'auto'</span></span><span>);
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_convert_encoding</span></span><span>(</span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>, </span><span><span class="hljs-string">'auto'</span></span><span>);
</span></span>၎င်းသည်မူလ string ကို encoding ကိုမည်သည့်နေရာတွင်မဆိုအသုံးပြုသည်ဖြစ်စေလုပ်ဆောင်ရန်အတွက် UTF-8 သို့ပြောင်းလဲသွားလိမ့်မည်။
အတိအလင်း encoding ကိုဖော်ပြရန်:
MB__STRPOS () ကိုခေါ်သည့်အခါ encoding ကိုအတိအလင်းသတ်မှတ်ထားသောအခါ။ Default Encoding သည်ကိုက်ညီမှုမရှိပါက encoding ကိုသတ်မှတ်ခြင်းသည်ကိုက်ညီမှုမရှိသောရလဒ်များကိုရှောင်ရှားနိုင်သည်။ ဥပမာအားဖြင့်:
<span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
</span></span>၎င်းသည် UTF-8 encoding အောက်တွင်ရှာဖွေမှုများကိုရှာဖွေသည်။
encoding ၏တရားဝင်မှုကိုစစ်ဆေးပါ။
အသုံးပြုသူထည့်သွင်းမှု (သို့) ပြင်ပအရင်းအမြစ်များမှကြိုးများကိုပြုပြင်သည့်အခါ string ၏ encoding ligactimacy ကိုအမြဲတမ်းသေချာအောင်လုပ်ပါ။ String သည်မှန်ကန်သော Multibyte encoding encoding encoding encoding ဖြစ်သည်ကိုစစ်ဆေးရန် MB_Check_encoding () function ကိုသုံးနိုင်သည်။
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">mb_check_encoding</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>) && </span><span><span class="hljs-title function_ invoke__">mb_check_encoding</span></span><span>(</span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>)) {
</span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-string">'UTF-8'</span></span><span>);
}
</span></span>၎င်းသည် encoding ပြ issues နာများကြောင့်ကြည့်ရှုခြင်းအမှားများကိုကာကွယ်ပေးသည်။
debugging နှင့်စမ်းသပ်ခြင်း:
ဖွံ့ဖြိုးရေးလုပ်ငန်းစဉ်အတွင်း MB_STRPOS () သည် မတူညီသောပတ်ဝန်းကျင်တွင်တသမတ်တည်းလုပ်ဆောင်နိုင်စေရန်ကွဲပြားခြားနားသော encodings အောက်တွင် string ရှာဖွေမှုများကိုစမ်းသပ်ရန်အကြံပြုသည်။ ဖြစ်နိုင်ပါက Bin2hex ကဲ့သို့သော string တစ်ခု၏ string ကိုကိုယ်စားပြုမှုကိုကြည့်ရှုရန်ကိရိယာအချို့ကိုစစ်ဆေးရန်ဇာတ်ကောင်များအမှန်တကယ်မှတ်ဉာဏ်တွင်မည်သို့သိုလှောင်ထားကြောင်းကြည့်ရှုရန်။
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">bin2hex</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">bin2hex</span></span><span>(</span><span><span class="hljs-variable">$needle</span></span><span>);
</span></span>၎င်းသည်စာလုံးများကိုမှတ်ဉာဏ်တွင်သိုလှောင်ထားပြီးသင်၏ကုဒ်ကိုပိုမိုကောင်းမွန်စေရန်မည်သို့နားလည်သည်ကိုနားလည်ရန်ကူညီလိမ့်မည်။
MB_STRPOS () MB_Stropos () သည်စာလုံးပေါင်းစုံ encodings မျိုးစုံကိုထောက်ပံ့နိုင်သည့်အစွမ်းထက်အမျိုးမျိုးသောရှာဖွေရေး function တစ်ခုဖြစ်သည်။ သို့သော်ကွဲပြားခြားနားသော encodings အောက်တွင်ပြန်လာသောရလဒ်များသည်ကိုက်ညီမှုရှိနိုင်သည်။ အဓိကအကြောင်းရင်းမှာ encoding method သည် character ၏ byte အရှည်ကိုဆုံးဖြတ်သည်။ ဤပြ problem နာကိုဖြေရှင်းရန်သော့ချက်မှာ string ကို encoding နှင့် lookup character ၏ encoding ကိုသေချာစေရန်ဖြစ်သည်။ ထို့အပြင် encodings ကိုစစ်ဆေးခြင်းနှင့်စစ်ဆေးခြင်းသည်ကုဒ်တည်ငြိမ်မှုကိုသေချာစေရန်သော့ချက်ကျသောခြေလှမ်းလည်းဖြစ်သည်။
ကျိုးကြောင်းဆီလျော်သော encoding ပြောင်းလဲခြင်းနှင့်စီမံခန့်ခွဲခြင်းအားဖြင့် MB_Stropos ၏ ရှေ့နောက်မညီအနေအထား၏ပြ problem နာကိုကျွန်ုပ်တို့ရှောင်ရှားနိုင်သည်။