လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> preg_replace_callback_array ကိုပိုမိုနားလည်နိုင်လောက်အောင်ကိရိယာ function ကိုအဖြစ်ထုပ်

preg_replace_callback_array ကိုပိုမိုနားလည်နိုင်လောက်အောင်ကိရိယာ function ကိုအဖြစ်ထုပ်

M66 2025-06-02

PHP တွင် PHP တွင် Preg_replace_callback_array () သည်အလွန်အစွမ်းထက်သော function တစ်ခုဖြစ်သည်။ ၎င်းသည်ပုံမှန်အသုံးအနှုန်းများကိုခင်းကျင်းစွာအစားထိုးရန်နှင့်ပုံမှန်ဖော်ပြချက်အတွက် callback function ကိုသတ်မှတ်ရန်ခွင့်ပြုသည်။ ဒီ function ဟာအစွမ်းထက်ပေမယ့်အစုရှယ်ယာသုံးစွဲမှုကြောင့်စတင်သုံးစွဲသူတွေအပေါ်နားလည်ဖို့အခက်တွေ့နေတယ်။ ဒါကြောင့်ဒီနေ့ခေတ်မှာ Preg_replace_callback_array () ကို ဘယ်လိုအားယူနိုင်မလဲ။

1 ။ Preg_replace_callback_array ၏အခြေခံအသုံးပြုမှုကိုပြန်လည်သုံးသပ်ခြင်း ()

အခြေခံ syntax preg_replace_callback_array () ၏အောက်ပါအတိုင်းဖြစ်သည် -

 preg_replace_callback_array(array $patterns, array $replace, string $subject): string
  • $ ပုံစံများ - Associative Array, သော့သည်ပုံမှန်အသုံးအနှုန်းပုံစံဖြစ်ပြီးတန်ဖိုးသည်သက်ဆိုင်ရာ callback function ဖြစ်သည်။

  • $ အစားထိုး : အစားထိုးရန်လိုအပ်သည့်ပစ်မှတ် string ကို။

  • $ ဘာသာရပ် - ပုံမှန်စကားရပ်ကိုအသုံးချမည့်ရည်မှန်းချက်ပန်းတိုင်။

callback တစ်ခုချင်းစီသည်လိုက်ဖက်သည့်ရလဒ်ခင်းကျင်းမှုကိုရရှိမည်ဖြစ်ပြီးသင် calnback function တွင်ပိုမိုရှုပ်ထွေးသောအကြောင်းအရာကိုဖြည့်ဆည်းပေးနိုင်ပြီးအစားထိုးအကြောင်းအရာများကိုပြန်ပေးနိုင်သည်။

2 ။ အဘယ်ကြောင့် Preg_replace_callback_array () ?

PREG_RESTER_CALLALBAKE_ARALBAKE_ARRAY () ၏ခေါ်ဆိုမှုနည်းလမ်းသည်အထူးသဖြင့်ပုံမှန်အသုံးအနှုန်းမျိုးစုံပြုလုပ်ရန်လိုအပ်သည့်အခါပိုမိုရှုပ်ထွေးသည်။ ဤလုပ်ဆောင်မှုကို encapsulating အားဖြင့်ကျွန်ုပ်တို့သည်မိတ္တူပွားများကိုလျှော့ချရန်, ကုဒ်ဖတ်ရှုခြင်းနှင့်ထိန်းသိမ်းခြင်းကိုတိုးတက်အောင်လုပ်ပြီးခေါ်ဆိုမှုနည်းလမ်းကိုပိုမိုရိုးရှင်းစေနိုင်သည်။

3 ။ preg_replace_callback_array () function ကိုထုပ်

PREG_RELE_CALLASTACE_ACALLBAKE_ARRAY () ကို လွယ်ကူစွာရိုးရှင်းအောင်လုပ်ရန် pregapplace_callback_Array သို့ encapsulate လုပ်နိုင်သည်။

 /**
 * မျိုးစုံပုံမှန်စကားရပ်အစားထိုးစစ်ဆင်ရေးကိုင်တွယ်
 *
 * @param string $subject ပစ်မှတ် string ကို
 * @param array $patterns အစားထိုး mode ကိုနှင့် callback function ကိုမြေပုံ
 * @return string အစားထိုး string ကိုပြန်လည်ရောက်ရှိ
 */
function replaceWithCallbacks(string $subject, array $patterns): string {
    return preg_replace_callback_array($patterns, $subject);
}

ဤလုပ်ဆောင်ချက်၏အဓိကအချက်မှာ Preg_replace_callback_Array () ကို ရိုးရိုး ရှင်းရှင်းလုပ်ဆောင်ချက် နှင့်ပုံမှန်စကားရပ်ပုံစံများနှင့် callback function များပါ 0 င်သော array $ ပုံစံများကို လက်ခံသည့်ရိုးရှင်းသော function တစ်ခုအဖြစ်ဖြစ်သည်။ ဤနည်းအားဖြင့်အသုံးပြုသူသည်ရှုပ်ထွေးသောပုံမှန်စကားရပ်လိုက်ဖက်ခြင်းနှင့် callback fundition settings ကိုကိုင်တွယ်ဖြေရှင်းခြင်းမရှိဘဲပစ်မှတ် string ကိုနှင့်ပုံစံပြန်ပို့မြေပုံပေါ်တွင်သာလွှဲပြောင်းပေးရသည်။

4 ။ ဥပမာများကိုသုံးပါ

ဒီ encapsulation function ကိုဘယ်လိုသုံးရမယ်ဆိုတာကိုပြဖို့ကွန်ကရစ်ဥပမာတစ်ခုကိုသုံးကြစို့။ ကျွန်ုပ်တို့တွင်ရက်စွဲအမျိုးမျိုး ( 2023-04-21 ) တွင်ပါ 0 င်သော target string တစ်ခုရှိသည်ဆိုပါစို့

 $patterns = [
    '/(\d{4})-(\d{2})-(\d{2})/' => function($matches) {
        return $matches[1] . 'ခုနှစ်' . $matches[2] . 'လ' . $matches[3] . 'နေ့';
    }
];

$subject = "ဒီနေ့ 2023-04-21,မနက်ဖြန် 2023-04-22。";
$replaced = replaceWithCallbacks($subject, $patterns);
echo $replaced;

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

 ဒီနေ့ 2023ခုနှစ်04လ21နေ့,မနက်ဖြန် 2023ခုနှစ်04လ22နေ့。

ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည်ပုံမှန်အစားထိုးလုပ်ငန်းများကိုခေါ်ဆိုမှုတစ်ခုသို့အလွယ်တကူရိုးရှင်းစေရန် EncapsulewithCallbacks () function ကိုအသုံးပြုသည်။

5 ။ Enhanced function ကို: URLs အလိုအလျောက်အစားထိုး

တစ်ခါတစ်ရံတွင်အစားထိုးလုပ်ငန်းစဉ်အတွင်းတိကျသော URL ကိုအလိုအလျောက်ပြုပြင်လိုသည်။ ဥပမာအားဖြင့်, ဒိုမိန်းအမည်အားလုံးကို M66.net ဖြင့်အစားထိုးပါ။ ဤအရာကိုအောင်မြင်ရန်ကျွန်ုပ်တို့၏ကိရိယာလုပ်ငန်းများကိုတိုးချဲ့နိုင်သည်။

 /**
 * အလိုအလျောက်အစားထိုး URL အတွက်ဒိုမိန်းအမည် m66.net
 *
 * @param string $subject ပစ်မှတ် string ကို
 * @return string အစားထိုး string ကိုပြန်လည်ရောက်ရှိ
 */
function replaceUrlsWithM66(string $subject): string {
    $patterns = [
        '/https?:\/\/([a-zA-Z0-9-]+)(\.[a-zA-Z0-9-]+)+/' => function($matches) {
            return 'https://' . 'm66.net';
        }
    ];
    return replaceWithCallbacks($subject, $patterns);
}

ဤဥပမာတွင်ကျွန်ုပ်တို့သည် m66.net နှင့်အတူပစ်မှတ် string တစ်ခုအတွက် URL domains အားလုံးကိုအစားထိုးသည့် function revesturlswithm66 () ကိုဖန်တီးသည်။ အသုံးပြုနည်းကိုအောက်ပါအတိုင်းဖြစ်သည် -

 $subject = "ကျွန်တော်တို့ရဲ့ site ကိုသွားပါ https://example.com သို့မဟုတ် https://test.com ပိုမိုသိရှိလိုပါကရယူပါ。";
$replaced = replaceUrlsWithM66($subject);
echo $replaced;

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