လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ပုံမှန်ပျက်ကွက်မှုကိုတားဆီးရန် MB_eregi_replace function ကိုအသုံးမပြုမီတရားမ 0 င်စာလုံးများကိုကြိုးမဲ့စာလုံးများဖြင့်မည်သို့ကြိုတင်မသုံးနိုင်ပါသနည်း။

ပုံမှန်ပျက်ကွက်မှုကိုတားဆီးရန် MB_eregi_replace function ကိုအသုံးမပြုမီတရားမ 0 င်စာလုံးများကိုကြိုးမဲ့စာလုံးများဖြင့်မည်သို့ကြိုတင်မသုံးနိုင်ပါသနည်း။

M66 2025-06-15

PHP တွင် MB_EREGI_RERE_ROTOTATETATETATETATETATE function ကို အသုံးပြု. Multibyte စာလုံးများကိုပုံမှန်အစားထိုးရန်နှင့်အမှုအားလျစ်လျူရှုရန်အသုံးပြုသည်။ UTF-8 ကဲ့သို့သော Multibyte encoded ကြိုးများကိုကိုင်တွယ်ရန်အလွန်အသုံးဝင်သည်။ သို့သော်အမှန်တကယ်အသုံးပြုမှုတွင် input string တွင်တရားမ 0 င်ဇာတ်ကောင်အချို့ပါ 0 င်ပါကတရားမ 0 င်သောဇာတ်ကောင်အချို့ပါ 0 င်ပါကပုံမှန်စာတန်းများမှလွတ်မြောက်ခြင်းသို့မဟုတ်အမှားအယွင်းများကိုမကြာခဏဖြစ်ပေါ်စေလိမ့်မည်။

တရားမ 0 င်ဇာတ်ကောင်များကြောင့်ပုံမှန်စကားရပ်ပျက်ကွက်မှုပြ problem နာကိုရှောင်ရှားရန် MB_ERREAGI_replace function ကိုမသုံးမီဤဆောင်းပါးသည်မည်ကဲ့သို့ Preprocess ကြိုးများကိုမသုံးနိုင်ကြောင်းမိတ်ဆက်ပေးလိမ့်မည်။


1 ။ ပြ problem နာနောက်ခံ

MB_EREGI_replace ၏ပထမဆုံး pareter သည်ပုံမှန်စကားရပ်ပုံစံဖြစ်သည်, ဒုတိယ parameter သည်အစားထိုးအကြောင်းအရာများဖြစ်ပြီးတတိယအချက်မှာလုပ်ငန်းများ၌ string ကိုဖြစ်သည်။

ဥပမာ -

 <?php
$text = "Hello World!";
$pattern = "world";
$replacement = "PHP";

echo mb_eregi_replace($pattern, $replacement, $text);
?>

output ကို:

 Hello PHP!

သို့သော် ဒေါ်လာပုံစံ သို့မဟုတ်ဆိုင်းငံ့ထားသည့် string သည်မကိုက်ညီသောအထူးအက္ခရာများပါ 0 င်သည့်အခါပွဲသည်ပျက်ကွက်နိုင်ပြီးသတိပေးချက်ကိုပင်ပစ်ချနိုင်သည်။


2 ။ ပုံမှန်ပျက်ကွက်စေနိုင်သောတရားမဝင်ဇာတ်ကောင်များ

ပုံမှန်အသုံးအနှုန်းများတွင်အထူးအဓိပ္ပာယ်ရှိသောဇာတ်ကောင်များမှာ -

 . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

အကယ်. ဤဇာတ်ကောင်များသည်ပုံစံတွင်သို့မဟုတ်အစားထိုးရန် string တွင်ပေါ်လာပါက၎င်းတို့သည်မှန်ကန်စွာထွက်ပြေးတိမ်းရှောင်ရမည်။


3 ။ ခြေလှမ်းများကို preprocessing

3.1 ပုံမှန်အထူးအက္ခရာများမှလွတ်မြောက်ရန်

PHP ၏ကိုယ်ပိုင် function preg_quote () သည် အထူးအက္ခရာများကိုပုံမှန်အသုံးအနှုန်းများမှလွတ်မြောက်နိုင်သည်။ သို့သော် MB_eregi_replace သည် MBREGEX တိုးချဲ့မှုကိုအသုံးပြု သည်PREG_ * စီးရီး PCRE မဟုတ်ဘဲထွက်ပေါက်စည်းမျဉ်းများကိုအနည်းငယ်ကွဲပြားသည်,

ဥပမာ -

 <?php
$pattern_raw = "hello.world"; // . ဒါဟာအထူးဇာတ်ကောင်ပါ
$pattern = preg_quote($pattern_raw, '/'); // မှလွတ်မြောက်ရန် hello\.world

$text = "Hello World! hello.world test.";

echo mb_eregi_replace($pattern, "PHP", $text);
?>

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

 Hello World! PHP test.

3.2 စစ်ထုတ်ခြင်းသို့မဟုတ်တရားမဝင်သောစာလုံးများကိုအစားထိုးပါ

ဆိုင်းငံ့ထားသောကြိုးများမှာထိန်းချုပ်မှုဇာတ်ကောင်များ (ပုံနှိပ်ထုတ်ဝေထားသောစာလုံးများကဲ့သို့သော) တွင်ထိန်းချုပ်မှုဇာတ်ကောင်များပါ 0 င်သည်။

 <?php
// ပုံနှိပ်ထုတ်ဝေထားသောစာလုံးများကိုဖယ်ရှားပါ,သာမန်စာလုံးများနှင့်တရုတ်သာသာထိန်းသိမ်းထားသည်
$clean_text = preg_replace('/[^\P{C}\n]+/u', '', $text);

4 ။ ပြည့်စုံသောဥပမာ

အောက်ပါဥပမာသည် MB_ereGi_replace နှင့်အစားထိုးမည့် string အတွက် preproccess ဇာတ်ကောင်မခေါ်မီပုံစံအတွက်အထူးအက္ခရာများမှလွတ်မြောက်ရန်ဘယ်လိုပြသထားတယ်:

 <?php
// အစားထိုးခံရဖို့လိုအပ်ကြောင်း strings နှင့်ပုံစံများ
$pattern_raw = "foo.bar?"; // အထူးအက္ခရာများပါရှိသည် . နှင့် ?
$replacement = "PHP";
$text = "Hello foo.bar? world! \x01\x02"; // ထိန်းချုပ်မှုဇာတ်ကောင်များပါဝင်သည်

// 1. ထွက်ပေါက် mode အတွက်အထူးအက္ခရာများ
$pattern = preg_quote($pattern_raw, '/');

// 2. preprocessed စာသား,ထိန်းချုပ်မှုဇာတ်ကောင်ဖယ်ရှားပါ
$clean_text = preg_replace('/[^\P{C}\n]+/u', '', $text);

// 3. အသုံးပြုmb_eregi_replaceအစားထိုးပါစေ(အမှုကိုလျစ်လျူရှုပါ)
$result = mb_eregi_replace($pattern, $replacement, $clean_text);

echo $result;
?>

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