Preg_replace_callback_array သည် PHP တွင်အစွမ်းထက်သော function တစ်ခုဖြစ်သည်။ ဤလုပ်ဆောင်မှုသည်အခြေအနေများစွာတွင်အလွန်အဆင်ပြေသော်လည်းအကြီးစားအချက်အလက်များနှင့်ဆက်ဆံရာတွင်၎င်းသည်စွမ်းဆောင်ရည်မြှင့်တင်မှုများကိုဖြစ်ပေါ်စေနိုင်သည်။ ၎င်း၏စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်စေရန်အတွက်ကျွန်ုပ်တို့သည်၎င်း၏ Execution ထိရောက်မှုကိုတိုးတက်စေရန်နည်းဗျူဟာအချို့ကိုကျင့်သုံးနိုင်သည်။ ဤတွင်အချို့သောလက်တွေ့ကျသော optimization နည်းစနစ်များဖြစ်ကြသည်။
ပုံမှန်အသုံးအနှုန်းများသည် Preg_replace_callback_array ၏စွမ်းဆောင်ရည်တွင်အဓိကအချက်ဖြစ်သည်။ အကယ်. ပုံမှန်စကားရပ်သည်အလွန်ရှုပ်ထွေးသည်ဆိုပါကကိုက်ညီသည့်လုပ်ငန်းစဉ်သည်အချိန်ကုန်လွန်လာသည်။ ဤအဆုံးတွင်ပုံမှန်အသုံးအနှုန်းများရေးသားခြင်းအရေးအသားကိုပိုကောင်းအောင်လုပ်ခြင်းသည်၎င်းတို့၏ရှုပ်ထွေးမှုနှင့်မလိုအပ်သောအရာများကိုလျော့နည်းစေနိုင်သည်, ၎င်းသည်စွမ်းဆောင်ရည်ကိုသိသိသာသာတိုးတက်စေနိုင်သည်။
အလွန်အမင်းရှုပ်ထွေးသော backtracking ကိုရှောင်ပါ ။ Backtracking သည်ပွဲတစ်ပွဲကိုတွေ့သည်အထိပုံစံတစ်မျိုးနှင့်ကိုက်ညီရန်ကြိုးစားသည့်ပုံမှန်အသုံးအနှုန်းတစ်ခုတွင်အင်္ဂါရပ်တစ်ခုဖြစ်သည်။ အလွန်အကျွံ backtracking သည်စွမ်းဆောင်ရည်ပျက်စီးခြင်းသို့ ဦး တည်နိုင်သည်။ ရှုပ်ထွေးသောအရေအတွက်သို့မဟုတ်မလိုအပ်သောအကိုင်းအခက်များကိုရှောင်ကြဉ်ရန်ပုံမှန်အသုံးအနှုန်းများကိုရိုးရှင်းအောင်ပြုလုပ်ခြင်းသည်နောက်ပြန်လှည့်ခြင်းအရေအတွက်ကိုလျော့နည်းစေသည်။
ဖမ်းယူခြင်းမရှိသောအုပ်စုများကိုသုံးပါ ။ ပုံမှန်စကားရပ်၏ကိုက်ညီမှုကိုသင်ဖမ်းယူရန်မလိုအပ်ပါကပုံမှန်ဖမ်းမိသည့်အုပ်စု ( (... ) ) အစား ( (: ... ) ) အစားအသုံးပြုပါ။ ၎င်းသည်မလိုအပ်သောမှတ်ဉာဏ် overhead နှင့်ကိုက်ညီသည့်အချိန်ကိုလျော့နည်းစေသည်။
Preg_replace_callback_array သည် အထူးသဖြင့်စွမ်းဆောင်ရည်ကိုအကျိုးသက်ရောက်နိုင်သည့်ပုံစံအမျိုးမျိုးကိုကိုင်တွယ်ဖြေရှင်းသည့်အခါတိုင်းပုံမှန်အသုံးအနှုန်းများကိုစုစည်းထားသည်။ အကယ်. သင်သည်ဤပုံမှန်အသုံးအနှုန်းများနှင့်သူတို့ကို cache ကို conflider လုပ်နိုင်လျှင်, ဟုခေါ်သောအခါပိုမိုမြန်ဆန်လိမ့်မည်။
$patterns = [
'/pattern1/' => function($matches) { return 'replacement1'; },
'/pattern2/' => function($matches) { return 'replacement2'; },
];
သင်ဤပုံမှန်အသုံးအနှုန်းများကိုပွားခြင်းနှင့်အချိန်ကိုချွေတာရန်ရှောင်ရှားရန်သီးခြား cache တွင်သိုလှောင်နိုင်သည်။
callback function သည် Preg_replace_callback_array ၏အရေးကြီးသောအပိုင်းဖြစ်သည်။ Callback function တွင် code သည်ရှုပ်ထွေးသောသို့မဟုတ်အသေသတ်ခြင်းကိုနိမ့်ကျပါက၎င်းသည်အလုံးစုံကွပ်မျက်မှုစွမ်းဆောင်ရည်ကိုအကျိုးသက်ရောက်လိမ့်မည်။ မလိုအပ်သောလုပ်ဆောင်မှုများကိုလျှော့ချရန် callback function ၏ code ကို optizerizing လုပ်ခြင်းသည်စွမ်းဆောင်ရည်ကိုထိရောက်စွာတိုးတက်စေနိုင်သည်။
ဥပမာအားဖြင့်, ရှုပ်ထွေးသောဒေတာဘေ့စ်မေးမြန်းချက်များသို့မဟုတ် callback လုပ်ဆောင်ချက်များတွင်ဖိုင်အမျိုးအစားများကိုလုပ်ဆောင်ခြင်းကိုရှောင်ပါ။ အကယ်. သင့်တွင်ဤလိုအပ်ချက်ရှိပါကဒေတာဘေ့စ်စုံစမ်းမှုသို့မဟုတ်ဖိုင်လည်ပတ်မှုကို function ပြင်ပသို့ပြောင်းရွှေ့ရန်စဉ်းစားနိုင်သည်။ ထို့နောက်ကြိုတင်ပြင်ဆင်မှုပြုလုပ်ပြီးနောက် callback function ကိုဖြတ်သန်းနိုင်သည်။
ဖြစ်နိုင်လျှင်ပုံမှန်အသုံးအနှုန်းများကိုပုံမှန်အသုံးအနှုန်းတစ်ခုအဖြစ်ပေါင်းစည်းရန်ကြိုးစားပါ, ၎င်းသည် Preg_replace_callback_array သို့ခေါ်ဆိုမှုအရေအတွက်ကိုလျှော့ချနိုင်သည်။
ဥပမာအားဖြင့်, သင့်တွင်ပုံမှန်ဖော်ပြရန်လိုအပ်သည့်ပုံမှန်အသုံးအနှုန်းနှစ်ခုရှိသည်ဆိုပါစို့။ ၎င်းကိုပိုမိုရှုပ်ထွေးသောပုံမှန်အသုံးအနှုန်းသို့ပေါင်းစည်းရန်ကြိုးစားပြီး callback function တွင်အစားထိုးလိုသောယုတ္တိဗေဒကိုကိုင်တွယ်နိုင်သည်ဆိုပါစို့။ ၎င်းသည်အချက်အလက်များကိုဖြတ်သန်းသွားသောအကြိမ်အရေအတွက်ကိုလျော့နည်းစေသည်။
$patterns = [
'/(pattern1)|(pattern2)/' => function($matches) {
if ($matches[1]) {
return 'replacement1';
}
return 'replacement2';
},
];
အချို့သောအခြေအနေများတွင်ထပ်ခါတလဲလဲလုပ်ဆောင်မှုခေါ်ဆိုမှုများကို callback function တွင်ပြုလုပ်နိုင်သည်။ ဥပမာအားဖြင့်တူညီသောတွက်ချက်မှုသို့မဟုတ်ထုတ်ယူခြင်းသည် calmback function တွင်အကြိမ်များစွာလုပ်ဆောင်သည်။ ထပ်ခါတလဲလဲတွက်ချက်မှုကိုရှောင်ရှားရန်ဤမိတ္တူပွားများကိုပြင်ပ variable များကိုပြင်ပ variable များကိုသို့မဟုတ် cache များထဲသို့ထုတ်ယူနိုင်သည်။
$precomputed_value = some_expensive_computation();
$patterns = [
'/pattern/' => function($matches) use ($precomputed_value) {
return $precomputed_value;
},
];
Preg_replace_callback_array function ၏စွမ်းဆောင်ရည်သည်ဒေတာများကိုဖြတ်သန်းသွားပုံနှင့်လည်းသက်ဆိုင်သည်။ အထူးသဖြင့်အချက်အလက်အမြောက်အများကိုပြုပြင်သည့်အခါအချက်အလက်များကိုဖြတ်သန်းရန်အတွက်ကြီးမားသောခင်းကျင်းမှုများကိုမသုံးပါနှင့်။
အကယ်. Callback function တွင် URL အစားထိုးပါက Preg_replace_callback_array ကို အသုံးပြု. ဒိုမိန်းအမည်ကိုထိထိရောက်ရောက်အစားထိုးရန်ကျွန်ုပ်တို့အသုံးပြုနိုင်သည်။ ဒိုမိန်းအမည်များကိုအချို့သော URL များတွင်အစားထိုးရန်လိုအပ်သည်ဟုယူဆပြီး၎င်းတို့ကိုပုံမှန်အသုံးအနှုန်းများဖြင့်လိုက်လျောညီထွေဖြစ်အောင်ပြုလုပ်နိုင်ပြီး callback function တွင်ပြုပြင်နိုင်သည်။
ဥပမာအားဖြင့်, သင်သည် M66.net နှင့်အတူ URLs အားလုံး၏ဒိုမိန်းအမည်အမည်ကိုအစားထိုးလိုပါကသင်လုပ်နိုင်သည်ဆိုပါစို့။
$patterns = [
'/https?:\/\/([a-zA-Z0-9\-\.]+)(\/[^\s]*)?/' => function($matches) {
return 'https://m66.net' . ($matches[2] ?? '');
},
];
ဤနည်းအားဖြင့်ကိုက်ညီသော URL အားလုံးကို Domain Name M66.net အသစ်ဖြင့်အစားထိုးလိမ့်မည်။
အစားထိုးယုတ္တိဗေဒတွင် static data သို့မဟုတ် fixed ပုံစံများစွာပါ 0 င်ပါက cache ကိုစဉ်းစားပါ။ Cache သည်အချိန်တိုင်းအနားယူခြင်းကိုရှောင်ရှားနိုင်သည်။
ပုံမှန်အသုံးအနှုန်းများ, အတားအဆီးပုံစံများကိုပိုကောင်းအောင်ပြုလုပ်ခြင်းအားဖြင့်ထပ်ခါတလဲလဲစစ်ဆင်ရေးများကိုလျှော့ချခြင်း, Preg_replace_callback_array ၏စွမ်းဆောင်ရည်ကိုသိသိသာသာတိုးတက်လာနိုင်သည်။ အကြီးစားအချက်အလက်များကိုပြုပြင်သည့်အခါအကျိုးသင့်အကြောင်းသင့်ရှိသည့်အကောင်းဆုံးမဟာဗျူဟာများသည်အပြောင်းအလဲမြန်နှုန်းကိုမြန်ဆန်စေပြီးအရင်းအမြစ်သုံးစွဲမှုကိုလျှော့ချနိုင်သည်။ စွမ်းဆောင်ရည်ကိုတိုးတက်အောင်လုပ်ရန်လိုအပ်ပါကအချို့သောအခြေအနေများတွင်ပိုမိုထိရောက်နိုင်သည့် Str_replace သို့မဟုတ် Preg_replace ကဲ့သို့သောအခြားနည်းလမ်းများကိုအသုံးပြုရန်စဉ်းစားပါ။