PHP တွင် Regular Expression များဖြင့် Callback အသုံးပြု၍ အစားထိုးခြင်း
အောက်ပါ စာကြောင်းတစ်ခုရှိသည်ဆိုပါစို့။
<?php
$str = '2+3= 3+5= 7+8=';
?>
ဤကဲ့သို့သော ပြဿနာများကို ဖြေရှင်းရန်
ပထမအကြောင်းအရာအနေဖြင့် ဖန်ရှင်သည် 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);
?>
ရလဒ်အနေဖြင့် ကျွန်ုပ်တို့၏
['2+3=', '2', '3']
['3+5=', '3', '5']
['7+8=', '7', '7']
ဆက်လက်လုပ်ဆောင်ကြည့်ပါမည်။ တွေ့ရှိသည့် အရာတစ်ခုစီသည် '!' သင်္ကေတနှင့် အစားထိုးကြည့်ပါမည်။
<?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% တိုးမြှင့်ပါ။