PHP တွင် MB_eregi_replace function သည်ကိစ္စနှင့်မခံစားနိုင်သော Multibyte ပုံမှန်စကားရပ်အစားထိုးရန်အသုံးပြုသည်။ ဤလုပ်ဆောင်ချက်သည်အထူးသဖြင့်တရုတ်, ဂျပန်, ကိုးရီးယားစသည်စသည်တို့ပါ 0 င်သောစကားလုံးများပါ 0 င်သည့်စကားလုံးများကိုထုတ်ယူခြင်းအတွက်အထူးသဖြင့်သင့်တော်သည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် Multi-line strings များကိုအစားထိုးရန်လိုအပ်ကြောင်းမကြာခဏသင်မကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ ပုံမှန်အသုံးအနှုန်းကိုပြုပြင်မွမ်းမံသူ, အထူးသဖြင့် s ကိုပြုပြင်မွမ်းမံသူကိုမှန်ကန်စွာအသုံးမပြုပါကအစားထိုးစစ်ဆင်ရေးတွင်မမျှော်လင့်သောအမှားများကိုဖြစ်ပေါ်စေနိုင်သည်။
Mb_eregi_replace သည် Mbstring extension မှထောက်ပံ့ပေးသော Matibyte ကိစ္စတွင်မခံစားနိုင်သောပုံမှန်အစားထိုးလုပ်ဆောင်ချက်ဖြစ်သည်။ ၎င်း၏အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -
mb_eregi_replace($pattern, $replacement, $string);
$ ပုံစံ - လိုက်ဖက်ရန်လိုအပ်သည့်ပုံမှန်အသုံးအနှုန်းပုံစံ (ကိစ္စတွင်အာရုံမခံစားနိုင်သော)
$ အစားထိုး : string ကိုအစားထိုး
$ string : input ကိုပစ်မှတ် string ကို
preg_replace နှင့်နှိုင်းယှဉ်ပါက MB_ereGi_replace သည် Multibyte ဇာတ်ကောင်အစုံများကိုကိုင်တွယ်ရန်ပိုမိုသင့်တော်သည်။
လိုင်းချိုးဖောက်မှုများပါ 0 င်သည့် Multiline ကြိုးများ ( \ n ) ပါ 0 င်ရန်ပုံမှန်အသုံးအနှုန်းများကိုအသုံးပြုသည့်အခါ ။ (အစက်) ပွဲစဉ်သည်ပုံမှန်အားဖြင့် အသစ်ကအသစ်များနှင့်မကိုက်ညီပါ ။ ဆိုလိုသည်မှာပုံစံများသည်ပုံစံများကိုသာဆိုလိုသည် ။ * စာတစ်ခုတည်းအကြောင်းအရာများကိုသာကိုက်ညီနိုင်ပြီးအသစ်ကြုံတွေ့ရသောအခါကိုက်ညီမှုကိုပြတ်တောက်သွားလိမ့်မည်။
ဥပမာအားဖြင့်:
$text = "အကြောင်းအရာပထမ ဦး ဆုံးလိုင်း\nအကြောင်းအရာ၏ဒုတိယလိုင်း";
$pattern = "ပထမလိုင်း.*ကေြနပ်သော";
$result = mb_eregi_replace($pattern, "替换ကေြနပ်သော", $text);
ဒီမှာ ။ * "ပထမလိုင်းအကြောင်းအရာ" ကိုလိုင်းများဖြတ်ပြီး "ဒုတိယလိုင်းအကြောင်းအရာ" ကိုမကိုက်ညီပါ။
အဆိုပါ s ကိုပြုပြင်မွမ်းမံ၏ function ကိုလုပ်ဖို့ဖြစ်ပါတယ် ။ အခြားစကားလုံးများဖြင့်လိုင်းချိုးဖောက်မှုများအပါအ 0 င်ဇာတ်ကောင်များအားလုံးနှင့်ကိုက်ညီပါ ။ လိုင်းများကိုဖြတ်ပြီးကိုက်ညီနိုင်ပါ။
သို့သော် MB_eregi_replace ကိုယ်တိုင်ကရိုးရာ PCRRE စတိုင်ပြုပြင်မွမ်းမံမှုကိုမပံ့ပိုးပါစေ ။ ယေဘုယျအားဖြင့် MB_ereGi_replace မှပုံမှန်အသုံးပြုသောပုံမှန်အသုံးပြုသော MBREGEX ၏ syntax သည် "single - line mode" ကိုဖွင့်ရန်အသုံးပြုနိုင်သည်။
အထက်ပါဥပမာကိုပြန်လည်ရေးပါ။
$pattern = "(?s)ပထမလိုင်း.*ကေြနပ်သော";
$result = mb_eregi_replace($pattern, "替换ကေြနပ်သော", $text);
ဒီမှာ (? S) ကိုဖွင့် ထားပြီး အသစ်အဆန်းဇာတ်ကောင်လိုက်ဖက်ပြီးကိုက်ညီမှုရှိလိမ့်မည်။
Dot နံပါတ်များသည်အသစ်သောဇာတ်ကောင်များနှင့်မကိုက်ညီပါ s ကိုပြုပြင်မွမ်းမံခြင်းမရှိဘဲ ။ Newline ဇာတ်ကောင်နှင့်မကိုက်ညီပါ, ထို့ကြောင့် Cross-line ပါဝင်မှုသည်မကိုက်ညီပါ။
မမျှော်လင့်သောကိုက်ညီမှုကြားဖြတ်နှောင့်ယှက် <br> <br> အသစ်ကဇာတ်ကောင်လိုက်ဖက်ခြင်းမရှိသေးသောကြောင့်ပုံမှန်ပွဲစဉ်သည်စောစောစီးစီးအဆုံးသတ်ပြီးရလဒ်သည်မျှော်လင့်ချက်များနှင့်မကိုက်ညီပါ။
Code Logic အမှားများကိုဖြေရှင်းရန်ခက်ခဲသည် ပျက်ကွက်မှုသို့မဟုတ်မပြည့်စုံသောကိုက်ညီမှုမရှိခြင်းကြောင့်အစီအစဉ်ကိုယုတ္တိဗေဒကိုမှန်ကန်စွာအကောင်အထည်မဖော်နိုင်ပါ။
<?php
// Multi-line string ကို
$text = "Hello World\nThis is a test.";
// ဖြည့်စွက်ခြင်း(?s)တစ်ခုတည်းလိုင်း mode ကို,အစက်များသည်အသစ်အဆန်းဇာတ်ကောင်နှင့်မကိုက်ညီပါ,ပွဲစဉ်မအောင်မြင်ပါ
$pattern1 = "Hello.*test";
$result1 = mb_eregi_replace($pattern1, "Replaced", $text);
// အဆိုပါ output ရလဒ်နေဆဲမူရင်း string ကိုဖြစ်ပါတယ်,因为ပွဲစဉ်မအောင်မြင်ပါ
echo $result1 . "\n";
// ဝင်ပါ(?s)开启တစ်ခုတည်းလိုင်း mode ကို,DOT ပွဲစဉ်လိုင်းအားလပ်ချိန်,အောင်မြင်စွာကိုက်ညီပါ
$pattern2 = "(?s)Hello.*test";
$result2 = mb_eregi_replace($pattern2, "Replaced", $text);
// ထုတ်လုပ်ခြင်း: Replaced
echo $result2 . "\n";
?>
MB_EREGI_RERE_RARESTALE ကိုအသုံးပြုမည့်အခါ multi - line stries များနှင့်ကိုက်ညီပါက, ကိုက်ညီသောပုံစံတွင်ပါ 0 င်လိုပါကပုံမှန်စကားရပ်တွင် (? s) ကိုဖွင့်ပါ။
ပုံမှန် mainifiers များကိုမှန်ကန်စွာကျွမ်းကျင်စွာအသုံးပြုခြင်းသည်ရှုပ်ထွေးသော debugging ပြ problems နာများစွာကိုရှောင်ရှားနိုင်ပြီး Code ၏တည်ငြိမ်မှုနှင့်ထိန်းသိမ်းခြင်းကိုတိုးတက်စေသည်။