PHP တွင် PREG_RESTER_CALLESTER_CALLASK_ARALBAY function သည်ပုံမှန်အသုံးအနှုန်းမျိုးစုံကိုပေါင်းစပ်ပြီးအစားထိုးစစ်ဆင်ရေးမျိုးစုံကိုကိုင်တွယ်ရန်ပေါင်းစပ်ထားသောခေါ်ဆိုမှုများကိုပေါင်းစပ်နိုင်သည့်အလွန်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ အဆင်ပြေသော်လည်းတစ်ခါတစ်ရံတွင်ပုံမှန်အသုံးအနှုန်းများသည် "အချည်းနှီးသောပွဲစဉ်" ကိုပြန်လာနိုင်သည့်ပြ a နာရှိနိုင်သည်။ ဆိုလိုသည်မှာ regex သည်တစ်စုံတစ်ရာကိုအောင်မြင်စွာလိုက်လျောညီထွေဖြစ်အောင်အောင်မြင်သော်လည်းအမှန်တကယ်အစားထိုးခြင်းကိုမပေးပါ။ ဒီဆောင်းပါးမှာဘာကြောင့်ဒီပြ problem နာကိုဘယ်လိုရှောင်ရှားရသလဲဆိုတာကိုလေ့လာမယ်။
Preg_replace_callback_array သည် PHP ရှိ function တစ်ခုဖြစ်ပြီး Keys ပုံမှန်အသုံးအနှုန်းများနှင့်တန်ဖိုးများသည် callback functions များဖြစ်သည်။ လုပ်ဆောင်ချက်သည်သတ်မှတ်ထားသောပုံမှန်အသုံးအနှုန်းနှင့်ကိုက်ညီပြီးကိုက်ညီသောရလဒ်ကိုလုပ်ဆောင်ရန်သက်ဆိုင်ရာ callback function ကိုအသုံးပြုသည်။ အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
preg_replace_callback_array(array $patterns_and_callbacks, string $subject);
$ patternals_and_callbacks : ဤသည်မှာသော့တစ်ခုစီသည်ပုံမှန်စကားရပ်တစ်ခုဖြစ်ပြီးတန်ဖိုးတစ်ခုစီသည် callback function တစ်ခုဖြစ်ပြီးတန်ဖိုးတစ်ခုစီသည် callback function တစ်ခုဖြစ်သည်။
$ အကြောင်းအရာ - လုပ်ငန်းများ၌တင်ရန် string ကို။
ဤလုပ်ဆောင်ချက်သည်ပုံမှန်အသုံးအနှုန်းတစ်ခုစီကိုပြင်ဆင်ခြင်းနှင့်ကိုက်ညီသောအကြောင်းအရာများကိုပြုပြင်ခြင်းအတွက် callback function သို့သွားပါလိမ့်မည်။
NULL ပွဲစဉ်၏ပြ problem နာသည်ပုံမှန်အသုံးအနှုန်းများနှင့်ပြန်လည်ခေါ်ဆိုမှုများ၏ယုတ္တိဗေဒနှင့် preg_replace_callback_array ၏လုပ်ငန်းယန္တရားနှင့်သက်ဆိုင်သည်။ ဤတွင်အချို့သောဘုံအကြောင်းပြချက်များ:
ပုံမှန်အသုံးအနှုန်းများတွင်လောဘမရှိသလောက်လောလောလောလော သို့မဟုတ် +? သို့မဟုတ် +? သို့မဟုတ် +) ကိုအသုံးပြုပါက၎င်းသည်အချည်းနှီးသော string နှင့်ကိုက်ညီနိုင်သည်။ ဥပမာအားဖြင့်:
$patterns = [
'/<a.*?>/' => function($matches) {
return 'သံကွင်းဆက်';
},
];
$text = '<a href="http://m66.net">Click here</a>';
$result = preg_replace_callback_array($patterns, $text);
ဤကိစ္စတွင် <a ။ *? >> ပုံမှန်စကားရပ်သည် <a> tag နှင့်ကိုက်ညီသော်လည်း, ၎င်းကိုရှောင်ရှားရန်သင်ပိုမိုတိကျစွာလိုက်လျောညီထွေဖြစ်အောင်ပြုလုပ်ရန်ပုံမှန်အသုံးအနှုန်းကိုပြင်ဆင်ရန်စဉ်းစားပါ။
callback function ကိုအချည်းနှီးသော string ကိုပြန်ရောက်သည့်အခါအစားထိုးစစ်ဆင်ရေးသည်ပုံမှန်စကားရပ်နှင့်ကိုက်ညီမှုရှိသော်လည်းအစားထိုးစစ်ဆင်ရေးသည်အမှန်တကယ်ပြောင်းလဲခြင်းမရှိပါ။ ဥပမာအားဖြင့်:
$patterns = [
'/<a href="http:\/\/m66.net.*?">.*?<\/a>/' => function($matches) {
return ''; // တစ် ဦး အချည်းနှီး string ကိုပြန်သွားပါ
},
];
$text = '<a href="http://m66.net">Click here</a>';
$result = preg_replace_callback_array($patterns, $text);
ဤဥပမာတွင် callback function သည် string ကိုအချည်းနှီးသော string တစ်ခုသို့ပြန်ပို့သည် ။
အကယ်. Regex ကိုကျယ်ကျယ်ပြန့်ပြန့်ရေးသားထားပါက၎င်းသည်မလိုအပ်သောအကြောင်းအရာနှင့်ကိုက်ညီမှုရှိနိုင်သည်။ ဥပမာအားဖြင့်, ပုံမှန်စကားရပ်သည် fuzzy သည်အလွန်ဆိုးရှားနေပါက၎င်းသည်မသက်ဆိုင်သော NULL ဇာတ်ကောင်များသို့မဟုတ်အခြားအကြောင်းအရာများနှင့်ကိုက်ညီနိုင်သည်။ ဤအရာကိုရှောင်ရှားရန်ပုံမှန်ဖော်ပြချက်သည်တတ်နိုင်သလောက်တိကျပြီးသင်အစားထိုးရန်လိုအပ်သည့်အစိတ်အပိုင်းများနှင့်ကိုက်ညီကြောင်းသေချာစေသင့်သည်။
URLs များကိုပြုပြင်သည့်အခါ, အထူးသဖြင့် URL များနှင့်ကိုက်ညီရန်ပုံမှန်အသုံးအနှုန်းများကိုအသုံးပြုသောအခါအစားထိုးစဉ်အတွင်းတိကျသောဒိုမိန်းအမည်ကိုက်ညီမှုရှိနိုင်သည်။ ဥပမာအားဖြင့်ကျွန်ုပ်တို့သည် URL အားလုံးနှင့်ကိုက်ညီသောပုံမှန်စကားရပ်ကိုအသုံးပြုပါက -
$patterns = [
'/https?:\/\/[a-zA-Z0-9.-]+/' => function($matches) {
// အဖြစ်ဒိုမိန်းအမည်ကိုအစားထိုးလိုက်ပါ m66.net
return str_replace(parse_url($matches[0], PHP_URL_HOST), 'm66.net', $matches[0]);
},
];
$text = 'Visit http://example.com or https://m66.net for more info.';
$result = preg_replace_callback_array($patterns, $text);
ဤကုဒ်၏ရည်ရွယ်ချက်မှာ URL domain name ကို M66.net ဖြင့်အစားထိုးရန်ဖြစ်သည်။ သို့သော်ပုံမှန်စကားရပ်သည် URL ကိုမှန်ကန်စွာမကိုက်ညီပါက URL ကိုယ်တိုင်သည်အချည်းနှီးဖြစ်သည်သို့မဟုတ်မှားယွင်းစွာပုံစံချသည်။
အချည်းနှီးသောပွဲများကိုရှောင်ရှားရန်ကျွန်ုပ်တို့သည်အောက်ပါအစီအမံများကိုပြုလုပ်နိုင်သည်။
တိကျစွာပုံမှန်အသုံးအနှုန်းတွေကိုရေးပါ - ပုံမှန်အသုံးအနှုန်းတွေကကျွန်ုပ်တို့အစားထိုးဖို့လိုတာကိုအတိအကျကိုက်ညီအောင်လုပ်ပေးပါ,
callback function ၏ပြန်လာတန်ဖိုးကိုစစ်ဆေးပါ - သင်မျှော်လင့်ထားသည့်အပြုအမူမဟုတ်လျှင် callback function ကိုအချည်းနှီးသော string ကိုမပြန်ပါစေနှင့်။ အကယ်. သင်သည်ပွဲတစ်ခုကိုဖျက်ရန်လိုပါက Null string အစား Null သို့မဟုတ်သင့်လျော်သောအစားထိုးတန်ဖိုးကိုစဉ်းစားပါ။
ပုံမှန်အသုံးအနှုန်းများကို debugging : သင်မျှော်လင့်ထားသည့်အရာနှင့်ကိုက်ညီမှုရှိစေရန်ပထမ ဦး ဆုံးလုပ်ဆောင်မှုများမှတဆင့်ပထမ ဦး ဆုံးထုတ်ဖော်ပြောဆိုခြင်းကိုပထမ ဦး စွာ debug လုပ်နိုင်သည် ။
လောဘနှင့်ကိုက်ညီခြင်း - အချို့သောကိစ္စရပ်များတွင်လောဘနှင့်လိုက်ဖက်ခြင်း ( * , + ) တွင်ပိုမိုထိရောက်နိုင်သည်။
Preg_replace_callback_array သည်အဆင်ပြေသောအစားထိုးလုပ်ငန်းများအတွက်ခွင့်ပြုထားသောအစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ သို့သော်အသုံးပြုရန်အတွက်ကျွန်ုပ်တို့သည်အစားထိုးရန်လိုအပ်သည့်အကြောင်းအရာများကိုရှောင်ရှားရန်လိုအပ်သောအကြောင်းအရာများကိုတိကျစွာကိုက်ညီစေရန်သေချာစေရန်ပုံမှန်အသုံးအနှုန်း၏ဒီဇိုင်းကိုကျွန်ုပ်တို့ဂရုပြုရန်လိုအပ်သည်။ ပုံမှန်အသုံးအနှုန်းများကိုတိကျစွာရေးသားခြင်းအားဖြင့် callback function ကိုမှန်ကန်စွာပြန်ပို့ခြင်းအားဖြင့်, လိုက်ဖက်သည့်ယုတ္တိဗေဒကို debing လုပ်ခြင်းအားဖြင့်အချည်းနှီးသောယုတ္တိဗေဒဆိုင်ရာပြ problem နာကိုဖြေရှင်းနိုင်သည်။
ဤဆောင်းပါးကိုလေ့လာခြင်းမှတစ်ဆင့်ပုံမှန်ဖော်ပြချက်များသည်အဘယ်ကြောင့်တရားမျှတမှုပွဲများကိုဖြစ်ပေါ်စေပြီးဤပြ problem နာကိုအမှန်တကယ်ဖြစ်ပေါ်စေကြောင်းနှင့်ဤပြ problem နာကိုအဘယ်ကြောင့်ရှောင်ရှားရကြောင်းမျှော်လင့်ပါသည်။