လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> $ ကိုက်ညီမှုကိုပြုပြင်ရန် callback function ကိုအတွက်အမှားဥပမာ

$ ကိုက်ညီမှုကိုပြုပြင်ရန် callback function ကိုအတွက်အမှားဥပမာ

M66 2025-06-02

Preg_replace_callback_array သည် PHP တွင်အလွန်အစွမ်းထက်သော function တစ်ခုဖြစ်သည်။ ၎င်းသည် strings တစ်ခု၏ပုံမှန်အသုံးအနှုန်းများနှင့် callback function များကိုမြေပုံဆွဲရန်ခွင့်ပြုသည်။ မည်သို့ပင်ဆိုစေကာမူတစ်ခါတစ်ရံ developer များက calmback function ကိုအသုံးပြုသောအခါသည် ဒေါ်လာနှင့်ကိုက်ညီသော array ကိုမတော်တဆပြုပြင်ပြောင်းလဲနိုင်ပြီးခန့်မှန်းရခက်သည့်ရလဒ်များရရှိစေသည်။ ဤဆောင်းပါးသည် Preg_replace_callback_callback_array callback_array callback unition function တွင် $ ကိုက်ညီမှုကို မှားယွင်းစွာပြုပြင်နည်းကိုမည်သို့မှားယွင်းစွာပြုပြင်ရမည်ကိုပြလိမ့်မည်။

နောက်ဘက်မေြ

Preg_reThollite_callback_array ၏အခြေခံအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -

 preg_replace_callback_array(
    array(
        '/pattern1/' => function($matches) { ... },
        '/pattern2/' => function($matches) { ... },
    ),
    $subject
);

ဤလုပ်ဆောင်ချက်တွင် ဒေါ်လာပွဲများသည် ပုံမှန်အသုံးအနှုန်းနှင့်ကိုက်ညီသောသတင်းအချက်အလက်အားလုံးပါ 0 င်သည့် array တစ်ခုဖြစ်သည်။ callback function တွင်သင်ဟာကိုက်ညီတဲ့အကြောင်းအရာတွေကိုကိုင်တွယ်ဖို့ဒီခင်းကျင်းမှုမှာဒီခင်းကျင်းမှုမှာအလုပ်လုပ်တယ်။

$ ကိုက်ညီမှုပြုပြင်ခြင်းအမှား

$ ကိုက်ညီမှုကို ပြုပြင်ခြင်းသည်မမျှော်လင့်သောအစားထိုးအပြုအမူ များကို မှားယွင်းစွာမမျှော်လင့်သောအစားထိုးအပြုအမူကိုဖြစ်ပေါ်စေနိုင်သည်။ ဒီနေရာမှာ $ ကိုက်ညီတဲ့ array ကိုမှားယွင်းစွာပြုပြင်မွမ်းမံဖို့ဘယ်လိုဥပမာဖေါ်ပြတဲ့ဥပမာတစ်ခုပါ။

 $pattern = '/(http:\/\/[a-zA-Z0-9.-]+)(\/[a-zA-Z0-9.-]*)/';
$subject = "Visit http://example.com/page1 and http://example.com/page2";

$result = preg_replace_callback_array(
    array(
        $pattern => function($matches) {
            // ချို့ယွင်းချက်အမှား$matches
            $matches[1] = "http://m66.net"; // domain name ကိုတိုက်ရိုက်ပြုပြင်မွမ်းမံ
            $matches[2] = "/newpage"; // လမ်းကြောင်းပြောင်းပါ

            // ပြုပြင်ထားသောအကြောင်းအရာသို့ပြန်သွားပါ
            return $matches[1] . $matches[2];
        }
    ),
    $subject
);

echo $result;

အထက်ပါကုဒ်တွင်ပထမ ဦး ဆုံး element (ဒိုမိန်းအမည်အပိုင်း) နှင့် $ ကိုက်ညီသော array တွင်ဒုတိယအကြိမ် (လမ်းကြောင်းအပိုင်း) ကိုပြုပြင်ခဲ့သည်။ ၎င်းသည်မှားယွင်းသောချဉ်းကပ်မှုတစ်ခုဖြစ်သည်။ အကြောင်းမှာအချို့သောကိစ္စရပ်များတွင် ဒေါ်လာနှင့်ကိုက်ညီသော array ၏ဖွဲ့စည်းပုံသည်မတော်တဆရွေ့လျားမှုကိုမတော်တဆပြောင်းလဲသွားနိုင်သည်သို့မဟုတ်ရလဒ်ပျက်ကွက်ခြင်းမှာမျှော်လင့်ထားသည့်အတိုင်းမဟုတ်ပါ။

ပြနာခွဲခြမ်းစိတ်ဖြာခြင်း

Preg_replace_callback_array တွင် ဒေါ်လာနှင့်ကိုက်ညီသော array တစ်ခုစီသည်ပုံမှန်အသုံးအနှုန်းနှင့်ကိုက်ညီမှုကိုကိုယ်စားပြုသည်။ အကယ်. ကျွန်ုပ်တို့သည်ဒြပ်စင်များထဲမှတစ်ခုကိုမှားယွင်းစွာမမှန်မကန်ဖြစ်စေပါက၎င်းသည်ပုံမှန်ဖော်ပြချက်၏အခြားအစိတ်အပိုင်းများကိုမှန်ကန်စွာမကိုက်ညီပါ။ ဥပမာ, ဒိုမိန်းအမည်သို့မဟုတ်လမ်းကြောင်းအပိုင်းတစ်ပိုင်းကိုပြုပြင်ပြီးလျှင်မူရင်းဖွဲ့စည်းပုံကိုပြောင်းလဲခြင်းကိုပြောင်းလဲနိုင်သည်။

ဤပြ problem နာကိုရှောင်ရှားရန် $ ကိုက်ညီသည့် array ကိုတိုက်ရိုက်ပြုပြင်မွမ်းမံခြင်းမှရှောင်ရှားသင့်သည်။ သို့သော် string အသစ်တစ်ခုတည်ဆောက်ခြင်းဖြင့်မူရင်းအကြောင်းအရာကိုအစားထိုးသင့်သည်။

လုပ်ဖို့မှန်ကန်သောနည်းလမ်း

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

 $pattern = '/(http:\/\/[a-zA-Z0-9.-]+)(\/[a-zA-Z0-9.-]*)/';
$subject = "Visit http://example.com/page1 and http://example.com/page2";

$result = preg_replace_callback_array(
    array(
        $pattern => function($matches) {
            // ဒိုမိန်းအမည်အသစ်များနှင့်လမ်းကြောင်းများတည်ဆောက်ပါ
            $newUrl = "http://m66.net" . $matches[2]; // ဒိုမိန်းအမည်ကိုပြုပြင်မွမ်းမံပါ,ဒါပေမယ့်လမ်းကြောင်းကိုစောင့်ရှောက်လော့

            // အသစ်ပြန်သွားပါURL
            return $newUrl;
        }
    ),
    $subject
);

echo $result;

ဤဥပမာတွင်ကျွန်ုပ်တို့သည် ဒေါ်လာနှင့်ကိုက်ညီသော array ကိုတိုက်ရိုက်ပြုပြင်မွမ်းမံခြင်းကိုရှောင်ရှားနိုင်သည်။ သို့သော်အစား string အသစ်တစ်ခုတည်ဆောက်ခြင်းဖြင့်မူရင်း URL ကိုအစားထိုးပါ။ ဤအချက်သည် callback function သည်ပုံမှန်စကားရပ်၏ကိုက်ညီသည့်ယုတ္တိဗေဒကိုမထိခိုက်စေဘဲမှန်ကန်သောအစားထိုးအောင်မြင်မှုရရှိရန်ဖြစ်သည်။

နိဂုံးချုပ်အားဖြင့်

Preg_replace_callback_array တွင်မှားယွင်းစွာမှားယွင်းစွာ ပြုပြင်ခြင်း သည်မမျှော်လင့်သောရလဒ်များဖြစ်ပေါ်နိုင်သည်။ ဤသို့ပြုလုပ်ရန်အကောင်းဆုံးနည်းလမ်းမှာ ဒေါ်လာပွဲများကို တိုက်ရိုက်ပြုပြင်ခြင်းကိုရှောင်ရှားရန်ဖြစ်သည်, သို့သော်ကြိုးအသစ်တစ်ခုတည်ဆောက်ခြင်းဖြင့်အစားထိုးဖြည့်စွက်ရန်ဖြစ်သည်။ ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည်ပုံမှန်စကားရပ်ကိုက်ညီမှုမပျက်စီးနိုင်အောင်မှန်ကန်မှုမရှိသေးပါ။