PHP တွင် Preg_replace_callback_array function ကိုပုံမှန်အားဖြင့်ပုံမှန်အစားထိုးသည့်အခါ callback operations လုပ်ဆောင်ရန်အသုံးပြုလေ့ရှိသည်။ ဤလုပ်ဆောင်ချက်သည်သော့ချက်များသည်ပုံမှန်အသုံးအနှုန်းများဖြစ်ပြီးတန်ဖိုးများသည်ကိုက်ညီမှုကိုကိုင်တွယ်သော callback functions များဖြစ်သည်။ သို့သော်အချို့ဖြစ်ရပ်များတွင်၎င်းတို့အား ဒေါ်လာပွဲတွင် မပေါ်ထွန်းခြင်းမှကာကွယ်ရန်အချို့အုပ်စုများကိုမဖမ်းယူလိုပါကမလိုအပ်သော overhead သို့မဟုတ်ရှုပ်ထွေးသောအပြောင်းအလဲများကြောင့်ဖြစ်သည်။
မလိုအပ်သော $ ငွေကြေးနှင့်မကိုက်ညီ စေရန် Preg_replace_callback_array ၏ callablback_array ၏ callback_array တွင်ပါဝင်ခြင်းသည်အကြောင်းအရာများ ပါ 0 င်သောအကြောင်းအရာများကို ကျွန်ုပ်တို့အသုံးပြုနိုင်သည်။ မဖမ်းယူခြင်းမရှိသောအုပ်စုသည်လိုက်ဖက်သည့်အခါအချို့သောအုပ်စုများကိုဖမ်းမိခြင်းမရှိသေးကြောင်း callback function ကိုမလိုအပ်သောကိုက်ညီမှုရလဒ်များကိုလျှော့ချခြင်းအားလျော့နည်းစေသည်။
ဖမ်းယူခြင်းမရှိသောအုပ်စုကိုကွင်းကွင်းများကိုပုံမှန်ဖော်ပြခြင်းဖြင့်ကြိုတင်ဖော်ပြခြင်းဖြင့်ကြေငြာခြင်းကိုကြေငြာသည် ။ : ။ ဥပမာအားဖြင့် (? - ... ) သည်မဖမ်းယူနိုင်သည့်အုပ်စုဖြစ်သည်။ ဤကိစ္စတွင်ပုံမှန်အသုံးအနှုန်းများတွင်အုပ်စုများကို ဒေါ်လာကိုက်ညီသော array သို့ဖမ်းယူခြင်းမရှိပါ။
ကျွန်ုပ်တို့သည်အတွင်းရှိအုပ်စုများစွာဖြင့်ပုံမှန်စကားရပ်ရှိသည်ဆိုပါစို့, သို့သော်အချို့သောအုပ်စုများနှင့်ကိုက်ညီသောအကြောင်းအရာများကိုကျွန်ုပ်တို့သာဂရုစိုက်သည်။ သို့ဖြစ်လျှင်ကျွန်ုပ်တို့သည်ပုံမှန်အသုံးအနှုန်းများကိုအကောင်းဆုံးဖြစ်စေရန်မဖမ်းယူနိုင်သည့်အုပ်စုများကိုအသုံးပြုနိုင်သည်။
<?php
// နမူနာ:စာသားကိုအစားထိုးလိုက်ပါURL
$pattern = '/(?:https?:\/\/)(m66.net\/[a-z0-9\/\?=&]*)/i';
$replacement = function ($matches) {
// ဂရုစိုက်ရုံပဲURL၏လမ်းကြောင်းအပိုင်း,တစ်ခုလုံးကိုမလိုအပ်ပါURLနှင့်သဘောတူညီချက်အပိုင်း
return 'https://m66.net' . $matches[1];
};
$input = 'ကျေးဇူးပြုပြီးလည်ပတ်ပါ https://m66.net/abc/def?query=xyz သို့မဟုတ် http://m66.net/12345';
$output = preg_replace_callback_array([
$pattern => $replacement,
], $input);
echo $output;
?>
ပုံမှန်စကားရပ် :
(? - https?: \ / \ /) - ဤအပိုင်းသည် URL (http သို့မဟုတ် https) ၏ protocol part နှင့်ကိုက်ညီသောဤအပိုင်းသည်ယခုအချိန်တွင် Non-charn-charnol non မဟုတ်သောအုပ်စုတစ်ခုဖြစ်သည်။ ဒီအပိုင်းမလိုအပ်ပါဘူးကတည်းကကျွန်တော်တို့ဟာဖမ်းမိတဲ့အုပ်စုလိုက်ကိုသုံးတယ်။
(M66.net \ / [A-Z0-9 \ /) *) - ဤသည်မှာဖမ်းမိသောအုပ်စုများဖြစ်ပြီးကျွန်ုပ်တို့ဂရုစိုက်သည့်အရာသည် M66.net ၏ နောက်ကွယ်ရှိအပိုင်းအပိုင်း ( abc / def? ery = quy = xyz )
callback function ကို :
callback function တွင် URL ၏လမ်းကြောင်းအပိုင်းကို $ ကိုက်ညီသည့်လမ်းကြောင်း အပိုင်းအစကိုရရှိခဲ့ပြီး protocol part ကိုလျစ်လျူရှုခြင်း ( https: // သို့မဟုတ် http: // ) ။
protocol part ကိုဖမ်းယူခြင်းမရှိပါက Preg_replace_callback_array သည် ငွေ ပြန်အမ်းခြင်း function ကိုအစားထိုးတန်ဖိုးအဖြစ်သာထောက်ပံ့ပေးလိမ့်မည်။
ရလဒ်ရလဒ် -
မူရင်းစာသားရှိ URLs များကိုကျွန်ုပ်တို့ဂရုစိုက်သည့်ပုံစံဖြင့်မှန်ကန်စွာအစားထိုးသည်။ မလိုအပ်သော ဒေါ်လာ နှင့်ကိုက်ညီမှုမရှိပါ။
ဖမ်းယူခြင်းမရှိသောအုပ်စုများ (? ... ) ကိုအသုံးပြုခြင်းသည်မလိုအပ်သောကိုက်ညီသောအုပ်စုများကိုလက်ခံခြင်းကိုရှောင်ကြဉ်ရန်ကူညီနိုင်သည်။ ၎င်းသည်မလိုအပ်သောအရင်းအမြစ်သုံးစွဲမှုကိုလျော့နည်းစေရုံသာမက Code ကိုပိုမိုတိကျပြီးနားလည်ရန်လွယ်ကူသည်။