လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> tag-drizet data injection ကိုအကောင်အထည်ဖော်ရန် Preg_replace_callback_array ကိုသုံးပါ

tag-drizet data injection ကိုအကောင်အထည်ဖော်ရန် Preg_replace_callback_array ကိုသုံးပါ

M66 2025-06-02

PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင် string ကိုအစားထိုးခြင်းသည်အလွန်များသောအားဖြင့်ဖြစ်သည်။ ကွဲပြားခြားနားသောအမှတ်အသားများအရစာသားအပိုင်းအစတစ်ခုအရကျွန်ုပ်တို့သည်စာသားအပိုင်းအစများကိုကွဲပြားခြားနားသောနည်းလမ်းများဖြင့်အစားထိုးရန်လိုအပ်သည့်အခါ Preg_reThollite_callback_array သည်အထူးသဖြင့်အဆင်ပြေသည်။

Preg_replace_callback_array ကို အသုံးပြု. "Mark-Rock-Dato Data Intection Injary ကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုဤဆောင်းပါးကသင့်အားပြသသည်။

Preg_replace_callback_array ဆိုတာဘာလဲ။

Preg_replace_callback_array သည် PHP 7 တွင်မိတ်ဆက်ပေးသည့်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ၎င်းသည်ကြိုးများကိုပုံမှန်အသုံးအနှုန်းများနှင့်သက်ဆိုင်ရာ callback functration များဖြင့်အစားထိုးရန်ခွင့်ပြုသည်။

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

 preg_replace_callback_array(array $patterns_and_callbacks, string $subject, int $limit = -1, int &$count = null): string

လျှောက်လွှာဇာတ်လမ်း - Tag-Drive Data Injection

ဥပမာ - မတူကွဲပြားသော tags အမျိုးမျိုးပါ 0 င်သည့်စာသား၏စာပိုဒ်တစ်ပိုဒ်ရှိသည့်အခြေအနေကိုမြင်ယောင်ကြည့်ပါ။

 အလည်အပတ်ခရီးမှလှိုက်လှဲစွာကြိုဆိုပါသည်[[url:/welcome]],လက်ရှိအချိန်က{{time}}。

ကျနော်တို့လက်ရှိအချိန်နှင့်အတူ hyperlink နှင့် { {{{{{}}] အစားထိုးချင်တယ်။

အဆင့် 1 - ပုံမှန်နှင့် callback function များကိုသတ်မှတ်ပါ

ကျွန်ုပ်တို့သည် tags နှင့်ကိုက်ညီရန်ပုံမှန်အသုံးအနှုန်းနှစ်ခုကိုအသုံးပြုသည်။

  • \ [url: (။ *? *?) \] \] \] \] URL အမျိုးအစား၏ tag ကိုကိုက်ညီရန်အသုံးပြုသည်။

  • \ {\ အချိန် \} \} အချိန်တံဆိပ်ခေါင်းများနှင့်ကိုက်ညီရန်အသုံးပြုသည်။

 $template = 'အလည်အပတ်ခရီးမှလှိုက်လှဲစွာကြိုဆိုပါသည်[[url:/welcome]],လက်ရှိအချိန်က{{time}}。';

$patterns = [
    '/\[\[url:(.*?)\]\]/' => function ($matches) {
        $path = $matches[1];
        return '<a href="https://m66.net' . htmlspecialchars($path) . '">ဤနေရာကိုကလစ်နှိပ်ပါ</a>';
    },
    '/\{\{time\}\}/' => function () {
        return date('Y-m-d H:i:s');
    },
];

$output = preg_replace_callback_array($patterns, $template);

echo $output;

ရလဒ်ရလဒ် -

 အလည်အပတ်ခရီးမှလှိုက်လှဲစွာကြိုဆိုပါသည်<a href="https://m66.net/welcome">ဤနေရာကိုကလစ်နှိပ်ပါ</a>,လက်ရှိအချိန်က2025-04-21 14:30:00。

မှတ်ချက်။ ။ အမှန်တကယ်အချိန်ကသင်ပြေးသည့်အချိန်နှင့်အညီကွဲပြားလိမ့်မည်။

အဘယ်ကြောင့် preg_replace_callback_array ကို အဘယ်ကြောင့်အသုံးပြု?

ဤချဉ်းကပ်မှုသည်ရိုးရာမျိုးစုံ preg_replace_callback သို့မဟုတ် string ကိုအစားထိုးခြင်းအတွက်အားသာချက်များစွာရှိသည်။

  1. ရှင်းလင်းသောဖွဲ့စည်းပုံ - ပုံစံများနှင့်အစားထိုးသည့်ပုံစံအားလုံးသည်ပြင်ဆင်ရန်လွယ်ကူသည့် array တစ်ခုတွင်အာရုံစိုက်သည်။

  2. ပိုမိုထိရောက်သောကွပ်မျက် : အားလုံး modes အားလုံးစာသားစကင်ဖတ်စစ်ဆေးမှုများမပါဘဲတစ်ပြိုင်တည်းလုပ်ဆောင်နိုင်ပါတယ်။

  3. ခိုင်မာသောအကျယ်ပြactacyacity - tag အသစ်တစ်ခုကိုထည့်သွင်းခြင်းက item တစ်ခုအတွက် item တစ်ခုထည့်သွင်းရန်လိုအပ်သည်။ အခြားကုဒ်ကိုပြုပြင်ရန်မလိုအပ်ပါ။

extension: tags များပိုမိုရယူရန်

အသုံးပြုသူအမည်, ကျပန်းနံပါတ်များစသည်တို့ကဲ့သို့သောတက်ကြွသော tags များပိုမိုများပြားလာလိုပါက $ ပုံစံများကို array သို့ဆက်လက်တိုးချဲ့ရန်ဆက်လက်လုပ်ဆောင်နေသည်။

 $patterns['/\{\{user\}\}/'] = function () {
    return 'Xiao Ming';
};

$patterns['/\{\{rand\}\}/'] = function () {
    return rand(1, 100);
};

ထို့နောက်၎င်းကိုဤကဲ့သို့သော template တွင်သုံးပါ။

 ဝမ်းသာစွာနှုတ်ဆက်ခြင်း,{{user}}!မင်းရဲ့ကံကောင်းတဲ့နံပါတ်က:{{rand}}。

အကျဉ်းချုပ်

tag-dative data injection engine ကို preg_replace_callback_array ကို အသုံးပြု. အလွယ်တကူအကောင်အထည်ဖော်နိုင်သည်။ ၎င်းသည် semantic သာသာမကအလွန်ကျယ်ပြန့်သောကျယ်ပြန့်စွာဖြင့်လည်းကောင်း, အကြောင်းအရာပြုပြင်ခြင်း,

ဒီဆောင်းပါးကိုနားလည်ပြီးသုံးဖို့ဒီဆောင်းပါးကအထောက်အကူဖြစ်လိမ့်မယ်လို့မျှော်လင့်ပါတယ်။ အကယ်. သင်သည်ပေါ့ပါးသော Template အင်ဂျင်သို့မဟုတ်အကြောင်းအရာပြန်ဆိုကိရိယာကိုတီထွင်နေပါကသင်၏ကုဒ်၏အရည်အသွေးနှင့်ပြောင်းလွယ်ပြင်လွယ်တိုးတက်စေရန်ဤချဉ်းကပ်နည်းကိုစဉ်းစားပါ။