လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP 7.3+ တွင် MB_eregi_replace ကမကိုက်ညီဟုမှားယွင်းစွာတွေးမိသည်

PHP 7.3+ တွင် MB_eregi_replace ကမကိုက်ညီဟုမှားယွင်းစွာတွေးမိသည်

M66 2025-06-05

string processing အတွက် PHP ကိုအသုံးပြုသောအခါ MB_ereGi_replace function သည်ကျွန်ုပ်၏ဘုံကိရိယာများအနက်မှတစ်ခုဖြစ်သည်။ ဤလုပ်ဆောင်ချက်သည် Multi-byte ကြိုးများပုံမှန်အားဖြင့်ပုံမှန်ဖြစ်ရပ်များကိုအကောင်အထည်ဖော်နိုင်သည်။ သို့သော် PHP 7.3+ ပတ်ဝန်းကျင်တွင် MB_ereGi_rereplace အသုံးပြုခြင်းသည်ကုဒ်နံပါတ်ထဲရှိ MB__eregi_replace ကို အသုံးပြုခြင်းသည်သတိပေးချက်များသို့မဟုတ်အမှားများကိုပင်ဖြစ်ပေါ်စေလိမ့်မည်ဟုကျွန်ုပ်ရုတ်တရက်တွေ့ရှိခဲ့သည်။ ဒီ function ကိုကန့်ကွက်ခဲ့ပေမယ့်နောက်ပိုင်းမှာငါကနက်နက်ရှိုင်းရှိုင်းလေ့လာပြီးအမှန်တရားကမဖြစ်ခဲ့ဘူးဆိုတာတွေ့ရှိခဲ့ပါတယ်။


mb_eregi_replace ဆိုတာဘာလဲ

ရိုးရိုးလေးပြောရလျှင် MB_eregi_replace သည် MATSIBYTE ကြိုးများ၌ပုံမှန်အသုံးအနှုန်းများကိုရှာဖွေရန် Mbstring extension လုပ်သည့်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။

 <?php
$original = "Hello World! hello world!";
$result = mb_eregi_replace("hello", "hi", $original);
echo $result; // ထုတ်လုပ်ခြင်း:hi World! hi world!
?>

ဤလုပ်ဆောင်မှု၏လုပ်ဆောင်ချက်သည် Multi-byte string processing အတွက်အလွန်အသုံးဝင်သည်။ အထူးသဖြင့်ဖြစ်ရပ်မှန်ကိုက်ညီမှုလိုအပ်ပါက


MB_eregi_replace ကို PHP 7.3+ မှာဘာကြောင့်လဲလို့ထင်ရတာလဲ။

PHP 7.3 နှင့်အထက်တွင် MB_EREGI_replace သည် အောက်ပါတို့နှင့်ဆင်တူသည့်သတိပေးချက်တစ်ခုကိုပြလိမ့်မည်။

 Deprecated: mb_eregi_replace(): This function is deprecated

ဤသည်သည် PHP မှတာဝန်ရှိသူများကဤလုပ်ဆောင်မှုကိုကန့်ကွက်သည်ဟုယုံကြည်ရန် (ကျွန်ုပ်အပါအ 0 င်) ကိုမှားယွင်းစွာယုံကြည်ကြောင်းမှားယွင်းစွာယုံကြည်သည်။ ဒါကြောင့် MB_ereG_rereplace ကို လက်စွဲစာအုပ်စာလုံးအသေးသုံးပြီး preg_replace ကိုသုံးပြီး preg_replace ကို သုံးတယ်။


အမှန်တရား - Mb_eregi_replace သည်လုံးဝစွန့်ပစ်ခြင်းမရှိသော်လည်းအခြေခံအစိတ်အပိုင်းများကိုမှီခိုသည်

စင်စစ်အားဖြင့် Php 7.3 မှ MB_EREGI_replace ပေါ် မူတည်. အခြေခံပုံမှန်အင်ဂျင်ကိုစတင်သည်။ PHP မှတရားဝင်အင်ဂျင်ကို Mbregex မှ PCRE (Perl သဟဇာတပုံမှန်အသုံးအနှုန်းများ) နှင့် MB_eregi_replace function ကို MBREGIX_REATE function ကို MBReGex ကို အခြေခံ. အကောင်အထည်ဖော်သည်။

ဆိုလိုသည်မှာ

  • အဆိုပါ function ကိုလုံးဝဖယ်ရှားပစ်မထားဘူး, ၎င်းသည် "အနာဂတ်၌စွန့်ခွာသွားနိုင်သည်" ဟုတရားဝင်မှတ်သားထားပြီး developer များကိုတဖြည်းဖြည်းအသွင်ကူးပြောင်းရေးကိုသတိပေးသည်။

  • ၎င်းသည် PHP ဗားရှင်းအချို့တွင်၎င်းကိုအဘယ်ကြောင့်ရရှိနိုင်ကြောင်းကိုလည်းရှင်းပြသည်။

  • အခြေခံ mbregex ပုံမှန်စာကြည့်တိုက်၏ပြုပြင်ထိန်းသိမ်းမှုအခြေအနေကိုယိုယွင်းပျက်စီးသွားပြီးမရှိတော့ပါ။


အကြံပြုရွေးချယ်စရာများ

MB_EREGI_replace သည် စွန့်ပစ်ခြင်းအန္တရာယ်ရှိသည်နှင့်အမျှအောက်ပါရွေးချယ်စရာများကိုအသုံးပြုရန်အကြံပြုသည်။

Preg_replace ကို U နှင့် iftifiers နှင့်သုံးပါ

 <?php
$original = "Hello ကမ်ာဘ! hello ကမ်ာဘ!";
$pattern = "/hello/u";   // u ပြုပြင်မွမ်းမံသူများကို Multibytes ကိုထောက်ပံ့သည်,i ပြုပြင်မွမ်းမံမှုများအနေဖြင့်အမှုများ - အာရုံမခံစားနိုင်ပါ
$result = preg_replace($pattern . "i", "hi", $original);
echo $result; // ထုတ်လုပ်ခြင်း:hi ကမ်ာဘ! hi ကမ်ာဘ!
?>

ဒီမှာအချက်ကတော့

  • U Modifier သည် UTF-8 Multibytes တွင်ပုံမှန်အသုံးအနှုန်းများကိုပြုလုပ်နိုင်သည်။

  • ငါ ပြုပြင်မွမ်းမံအကောင်အထည်ဖော်မှုသည်အမှုအားလျစ်လျူရှု;

  • Preg_replace သည် PHP မှတရားဝင်အကြံပြုထားသောခေတ်မီပုံမှန်အစားထိုးလုပ်ဆောင်ချက်ဖြစ်သည်။

mb_str_ireplace (PHP 8.0+ အထောက်အပံ့) ကိုအသုံးပြုခြင်း

PHP 8.0 သည် MB_Str_ireToLyplace ဖြစ်သော MB_Str_ireplace ကို ပေါင်းထည့်သည်။ syntax သည်ရိုးရှင်းပါသည်။

 <?php
$original = "Hello ကမ်ာဘ! hello ကမ်ာဘ!";
$result = mb_str_ireplace("hello", "hi", $original);
echo $result; // ထုတ်လုပ်ခြင်း:hi ကမ်ာဘ! hi ကမ်ာဘ!
?>

ဤစီမံကိန်း Runtime ပတ်ဝန်းကျင်သည် PHP 8.0 နှင့်အထက်ကိုထောက်ပံ့ပါက၎င်းသည်အလွယ်ကူဆုံးအခြားရွေးချယ်စရာဖြစ်သည်။


အကျဉ်းချုပ်

  • MB_EREGI_replace သည် PHP 7.3+ တွင်တန်ဖိုးရှိသည့်အရာအဖြစ်မှတ်သားထားသော်လည်းလုံးဝမဖယ်ရှားနိုင်ပါ။

  • ဤစွန့်ပစ်ခြင်းသည်လုပ်ငန်းဆောင်တာများကိုတိုက်ရိုက်ဖယ်ရှားခြင်းထက်အခြေခံအားဖြင့်ပုံမှန်အင်ဂျင်ပြောင်းလဲမှုမှဖြစ်သည်။

  • U နှင့် iTifiers နှင့် Preg_replace ကို အသုံးပြုရန်အကြံပြုသည်။

  • PHP 8.0 သို့မဟုတ်အထက်သို့အဆင့်မြှင့်တင်နိုင်လျှင် MB_Striietplace ကို သုံးနိုင်သည်။

  • အနာဂတ်တွင် PHP ဗားရှင်းများသည် MB_ereGi_replace ကို လုံးဝဖယ်ရှားပစ်နိုင်ပြီးအစောပိုင်းကကုဒ်သည် ပို. ကောင်းသည်။

ဤဆောင်းပါးသည်သင်၏လက်ရှိအခြေအနေကို MB_ereGi_replace ၏လက်ရှိအခြေအနေကိုရှင်းလင်းရန်,