⊗ppPmRgRCb 260 of 447 menu

PHP တွင် Regular Expression များဖြင့် Callback အသုံးပြု၍ အစားထိုးခြင်း

အောက်ပါ စာကြောင်းတစ်ခုရှိသည်ဆိုပါစို့။

<?php $str = '2+3= 3+5= 7+8='; ?>

ကိန်းဂဏန်း+ကိန်းဂဏန်း= ပုံစံရှိသော အရာအားလုံးကို ရှာဖွေပြီး ညီမျှခြင်းသင်္ကေတနောက်တွင် ပေါင်းလဒ်ရလဒ်များ ပေါ်လာစေလိုသည်ဆိုပါစို့။

ဤကဲ့သို့သော ပြဿနာများကို ဖြေရှင်းရန် preg_replace_callback ဖန်ရှင်ကို အသုံးပြုရန် သင့်လျော်ပါသည်။ ၎င်းဖန်ရှင်သည် preg_replace ဖန်ရှင်ကဲ့သို့ပင် အလုပ်လုပ်ပြီး Regular Expression အရ ရှာဖွေအစားထိုးပေးသော်လည်း ရှာတွေ့သည့် အပိုင်းများကို ထပ်မံလုပ်ဆောင်ချက်များ ပြုလုပ်နိုင်စေရန် ခွင့်ပြုပေးပါသည်။

ပထမအကြောင်းအရာအနေဖြင့် ဖန်ရှင်သည် Regular Expression ကို လက်ခံပြီး၊ ဒုတိယအကြောင်းအရာအနေဖြင့် မည်သည့်အရာနှင့် အစားထိုးမည်ကို လက်ခံကာ၊ တတိယအကြောင်းအရာအနေဖြင့် အစားထိုးမှုပြုလုပ်မည့် စာကြောင်းကို လက်ခံပါသည်။

ဒုတိယအကြောင်းအရာတွင် Callback Function တစ်ခုကို ပေးပို့ရမည်။ ၎င်းဖန်ရှင်ကို တွေ့ရှိသည့် တိုက်ဆိုင်မှုတစ်ခုစီအတွက် ခေါ်ယူအသုံးပြုပါလိမ့်မည်။

Callback Function ၏ ပထမအကြောင်းအရာအနေဖြင့် တွေ့ရှိသည့် အရာများကို သိမ်းဆည်းမည့် variable ကို သတ်မှတ်ပေးရမည်။ ၎င်း variable သည် တွေ့ရှိသည့် capture groups များ၏ array တစ်ခုဖြစ်လာပါလိမ့်မည်။

လက်တွေ့လုပ်ဆောင်ကြည့်ရအောင်။ ကျွန်ုပ်တို့၏ စာကြောင်းခွဲများကို ဖမ်းယူမည့်၊ ပထမကိန်းဂဏန်းကို ပထမ capture group တွင်ထည့်ကာ၊ ဒုတိယကိန်းဂဏန်းကို ဒုတိယ capture group တွင်ထည့်မည့် ကုဒ်ကိုရေးကြည့်ပါမည်။

<?php $str = '2+3= 3+5= 7+8='; preg_replace_callback('#(\d+)\+(\d+)=#', function($match) { var_dump($match); }, $str); ?>

ရလဒ်အနေဖြင့် ကျွန်ုပ်တို့၏ var_dump သည် အကြိမ်သုံးကြိမ် အလုပ်လုပ်ပြီး၊ အောက်ပါအတိုင်း အလိုက်သင့် ထုတ်ပြပေးပါလိမ့်မည်။

['2+3=', '2', '3'] ['3+5=', '3', '5'] ['7+8=', '7', '7']

ဆက်လက်လုပ်ဆောင်ကြည့်ပါမည်။ တွေ့ရှိသည့် အရာတစ်ခုစီသည် return မှတစ်ဆင့် Callback Function မှပြန်ပေးသည့် အရာနှင့် အစားထိုးခြင်း ခံရမည်ဖြစ်သည်။ ဥပမာအနေဖြင့် ရှာဖွေသည့် စာကြောင်းခွဲတစ်ခုစီကို '!' သင်္ကေတနှင့် အစားထိုးကြည့်ပါမည်။

<?php $str = '2+3= 3+5= 7+8='; $res = preg_replace_callback('#(\d+)\+(\d+)=#', function($match) { return '!'; }, $str); echo $res; // '! ! !' ကိုထုတ်ပြမည် ?>

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

<?php $str = '2+3= 3+5= 7+8='; $res = preg_replace_callback('#(\d+)\+(\d+)=#', function($match) { return $match[1] + $match[2]; }, $str); echo $res; // '5 8 13' ကိုထုတ်ပြမည် ?>

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

<?php $str = '2+3= 3+5= 7+8='; $res = preg_replace_callback('#(\d+)\+(\d+)=#', function($match) { return $match[0] . ($match[1] + $match[2]); }, $str); echo $res; // '2+3=5 3+5=8 7+8=13' ကိုထုတ်ပြမည် ?>

စာကြောင်းတစ်ခုရှိပါသည်။

<?php $str = 'The numbers are 3, 7 and 12'; ?>

စာကြောင်းအတွင်းရှိ ကိန်းဂဏန်းအားလုံးကို ၎င်းတို့၏ နှစ်ထပ်ကိန်းများနှင့် အစားထိုးပါ။

မျှော်လင့်ထားသည့် ရလဒ်။

'The numbers are 9, 49 and 144'

စာကြောင်းတစ်ခုရှိပါသည်။

<?php $str = '2023-01-15 2022-12-31 2024-05-20'; ?>

ရက်စွဲအားလုံးကို ရက်.လ.နှစ် ပုံစံသို့ ပြောင်းလဲပါ။

စာကြောင်းတစ်ခုရှိပါသည်။

<?php $str = 'Costs: $15, $20, $100'; ?>

စျေးနှုန်းအားလုံးကို 10% တိုးမြှင့်ပါ။

မြန်မာ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ဝက်ဘ်ဆိုက် လုပ်ဆောင်ခြင်း၊ ဆန်းစစ်လေ့လာခြင်းနှင့် ပုဂ္ဂလိကပြုပြင်ခြင်းအတွက် ကျွန်ုပ်တို့သည် cookie များကို အသုံးပြုပါသည်။ ဒေတာများကို ပြုပြင်ခြင်းသည် ကိုယ်ရေးကိုယ်တာ မူဝါဒအတိုင်း ဖြစ်ပါသည်။
အားလုံးလက်ခံရန် ပြင်ဆင်ရန် ငြင်းပယ်ရန်