လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> mb_eregi_replace ပံ့ပိုးမှုတွေ \ p {han} တကယ်တော့ဒါဟာ Unicode Properties ကိုလုံးဝနားမလည်ဘူး

mb_eregi_replace ပံ့ပိုးမှုတွေ \ p {han} တကယ်တော့ဒါဟာ Unicode Properties ကိုလုံးဝနားမလည်ဘူး

M66 2025-06-12

PHP ရှိ Multibyte ကြိုးများနှင့်ဆက်ဆံရာတွင်ကျွန်ုပ်တို့သည်ပိုမိုကောင်းမွန်သောယူနီစာသွယ်ဝိုက်ရေးအတွက် Mbstring extension ကိုကျွန်ုပ်တို့မကြာခဏမှီခိုလေ့ရှိသည်။ အထူးသဖြင့် MB_ereG_replace နှင့် MB_ereGi_replace သည် Byte-friendly ပုံမှန်အစားထိုးလုပ်ဆောင်မှုများဖြစ်သည်ဟုဆိုကြသည်။ developer အတော်များများက PCRE ကဲ့သို့ Unicode {pcre ကဲ့သို့ Unicode attribute များကိုသူတို့အသိအမှတ်ပြုနိုင်သည်ဟုမှားယွင်းစွာယုံကြည်ကြသည်။

ကံမကောင်းစွာပဲ, ဒီစိတ်ကူးမှားသည်။

MB_eregi_replace သည် POSIP ပုံစံပုံမှန်အင်ဂျင်ကိုအသုံးပြုသည်

ပထမ ဦး စွာ MB_ereG_replace နှင့် MB_ereG_replace သည် Oniguruma ကို အခြေခံ. ပုံမှန်အင်ဂျင်ကိုအသုံးပြုသည်။ သို့သော်၎င်းသည်အသုံးပြုသော syntax ပုံစံသည် Perl-Limited ပုံမှန်အသုံးအနှုန်းများ (PCRE) မဟုတ်သော်လည်းအကန့်အသတ်ရှိသော PONRE Variant ဖြစ်သည်။ Oniguruma ကိုယ်တိုင်က Unicode attribute ကိုကိုက်ညီမှုရှိမရှိမှတ်တိုင်မှာ PHP 7.3+ တွင် PREG_Match အထောက်အပံ့ပေးရမည်

ပုံမှန်နားလည်မှုလွဲခြင်းဥပမာတစ်ခုကိုကြည့်ကြစို့။

 $text = 'ဒါ test ကေြနပ်သော 123';
$result = mb_eregi_replace('\p{Han}+', '', $text);
echo $result;

ဒီ script ကတရုတ်စာလုံးတွေကိုဖယ်ရှားပြီးအင်္ဂလိပ်နဲ့နံပါတ်တွေကိုထိန်းသိမ်းလိမ့်မယ်လို့ထင်သလား။ တကယ်တော့တော့မဟုတ်ဘူး။ MB_eregi_replace သည် ပုံမှန် backslash နှင့် အက် ရာစ်အနေဖြင့်ပေါင်းစပ်ပါ ၎င်းသည် Regex ကိုလုံးဝမမှန်ကန်ကြောင်းနှင့်တရုတ်စာလုံးများနှင့်မကိုက်ညီပါ။

စစ်မှန်သောနားလည်မှုယူနီကုဒ်အထောက်အပံ့ - Preg_replace + U Modifier သည်ဘုရင်ဖြစ်သည်

Unicode Properties အတွက်ပံ့ပိုးမှုများကိုအကောင်အထည်ဖော်ရန်အတွက်မှန်ကန်သောနည်းလမ်းမှာ preg_replace ကို အသုံးပြုရန်နှင့် PHP သည် ကြိုး များကိုအနက်ဖွင့်ရန် Unicode mode ကိုသုံးရန် Unicode mode ကိုသုံးနိုင်သည်။

မှန်ကန်သောဥပမာကိုကြည့်ရအောင်။

 $text = 'ဒါ test ကေြနပ်သော 123';
$result = preg_replace('/\p{Han}+/u', '', $text);
echo $result;

ထုတ်လုပ်မှု -

  test  123

ဒါကငါတို့တကယ်လိုချင်တဲ့အကျိုးသက်ရောက်မှုပဲ။

အဘယ်နားလည်မှုလွဲမှားခြင်းမှဤမျှကာလပတ်လုံးကြာရှည်ခံကြတာလဲ

MB_eregi_replace "Multi-byte အထောက်အပံ့" ရှိကြောင်းရှင်းပြချက်ကိုရှာဖွေတွေ့ရှိသူများကမူ၎င်းသည်ယူနီကုတ်ချို့ယွင်းမှုနှင့်ကိုက်ညီမှုရှိကြောင်း, ဥပမာအားဖြင့်, MB_ereGi_replace \ P {HAN} ကိုရှာဖွေပါက, သင်သည်မရေမတွက်နိုင်သောသို့မဟုတ်ခေတ်မမီတော့ရှင်းလင်းချက်အချို့ကိုတွေ့နိုင်သည်။

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

mb_eregi_replace ကို သုံးရန်လိုလျှင်ကော။

ရိုးရိုးသားသားပြောရရင်မင်းကအဲဒါကိုမသုံးတော့ဘူး။ သို့သော်၎င်းလိုက်လျောညီထွေဖြစ်အောင်လိုအပ်ချက်များအတွက်အသုံးပြုရန်လိုအပ်ပါကတရုတ်စာလုံးများအတွက် Unicode Range encoding ကိုအသုံးပြုရန်စဉ်းစားနိုင်သည်။

 $text = 'ဒါ test ကေြနပ်သော 123';
$result = mb_eregi_replace('[တစ်-နှင်းဆီပင်]+', '', $text);
echo $result;

ဤချဉ်းကပ်မှုသည်မလုံလောက်သော်လည်း (ဥပမာအားဖြင့်၎င်းသည်တရုတ်ဇာတ်ကောင် extensions အားလုံးနှင့်မကိုက်ညီပါက၎င်းသည်ယခင်ကအဆင်သင့်ဖြစ်နေသည် တိကျမှန်ကန်မှုကိုတိုးတက်စေရန်တရုတ်၏လက်ခဏာမျိုးစုံကိုကိုယ်တိုင်စာရင်းပြုစုနိုင်သည်။

ပိုမိုကောင်းမွန်သောချဉ်းကပ်နည်းသည် preg_replace သို့လုံးလုံးလှည့်ရန်နှင့် Mbstring.functring.functringloverload သို့မဟုတ်သင့်လျော်သော Multibyte Support မူဝါဒများကိုသေချာစေရန်ဖြစ်သည်။ ၎င်းသည် PCRE ၏စွမ်းအားကိုတိုးမြှင့်စေသည်။

အကျဉ်းချုပ်

MB_ereGi_replace ('\ P {Han}), ... ) ကို မလှည့်ပါနှင့်။ Unicode Properties များကိုကိုင်တွယ်ရန်လိုအပ်ပါကယုံကြည်စိတ်ချရသောတစ်ခုတည်းသောရွေးချယ်မှုမှာ PREG_RELE ကို UPRIFIER နှင့်အတူ PREG_RELLE ဖြစ်သည်။ ဤနားလည်မှုလွဲခြင်းနားလည်မှုလွဲသည်နှစ်များတစ်လျှောက် PHP developer များစွာကိုစိတ်အနှောင့်အယှက်ဖြစ်စေသည်။ ၎င်းသည်အရင်းအမြစ်ကိုပြင်ဆင်ရန်အချိန်ဖြစ်သည်။