preg_match ဖန်ရှင်
preg_match ဖန်ရှင်သည် Regular Expression တစ်ခုနှင့် စာကြောင်းတစ်ခုအတွင်း ကိုက်ညီမှုများကို ရှာဖွေပေးသည်။ ပထမပါရာမီတာအနေဖြင့် Regular Expression ပုံစံကို လက်ခံပြီး၊ ဒုတိယပါရာမီတာအနေဖြင့် ရှာဖွေမည့် စာကြောင်းကို လက်ခံသည်။ တတိယ (မဖြစ်မနေထည့်ရန်မလိုသော) ပါရာမီတာအနေဖြင့် တွေ့ရှိသော ကိုက်ညီမှုများကို သိမ်းဆည်းရန် array တစ်ခု၊ စတုတ္ထ (မဖြစ်မနေထည့်ရန်မလိုသော) ပါရာမီတာအနေဖြင့် flag များ၊ ပဉ္စမ (မဖြစ်မနေထည့်ရန်မလိုသော) ပါရာမီတာအနေဖြင့် ရှာဖွေမှုစတင်ရမည့် အကွာအဝေးကို လက်ခံသည်။
သဒ္ဒါဖွဲ့စည်းပုံ
preg_match(pattern, subject, [matches], [flags], [offset]);
Flag များ
| Flag | Constant | ဖော်ပြချက် |
|---|---|---|
PREG_PATTERN_ORDER |
1 | ရလဒ်များကို ပုံစံခွက်များအလိုက် စီဆီထားသည် (ပုံမှန်) |
PREG_SET_ORDER |
2 | ရလဒ်များကို ကိုက်ညီမှုအစုများအလိုက် စီဆီထားသည် |
PREG_OFFSET_CAPTURE |
256 | စာကြောင်းအတွင်းရှိ ကိုက်ညီမှု၏ နေရာကို ပြန်ပေးသည် |
PREG_UNMATCHED_AS_NULL |
512 | မကိုက်ညီသော subpattern များကို NULL အဖြစ် ပြန်ပေးသည် |
နမူနာ
စာကြောင်းတစ်ခုတွင် နံပါတ်များ ပါဝင်သလား စစ်ဆေးကြည့်ရအောင်။
<?php
$res = preg_match('/\d+/', 'abc123');
echo $res;
?>
ကုဒ်ကို run ပြီးသောအခါ ရလဒ်။
1
နမူနာ
စာကြောင်းထဲမှ နံပါတ်အားလုံးကို array တစ်ခုအတွင်းသို့ ထုတ်ယူကြည့်ရအောင်။
<?php
preg_match('/\d+/', 'abc123', $matches);
var_dump($matches);
?>
ကုဒ်ကို run ပြီးသောအခါ ရလဒ်။
[0 => '123']
နမူနာ
Regular Expression အတွင်း အမည်ပေးထားသော အစုများကို အသုံးပြုခြင်း။
<?php
preg_match('/(?P<name>\w+)\s+(?P<age>\d+)/', 'John 25', $matches);
var_dump($matches);
?>
ကုဒ်ကို run ပြီးသောအခါ ရလဒ်။
[
0 => 'John 25',
'name' => 'John',
1 => 'John',
'age' => '25',
2 => '25'
]
နမူနာ
ကိုက်ညီမှု၏ နေရာကို ရယူရန် PREG_OFFSET_CAPTURE flag ကို အသုံးပြုခြင်း။
<?php
preg_match('/\d+/', 'abc123', $matches, PREG_OFFSET_CAPTURE);
var_dump($matches);
?>
ကုဒ်ကို run ပြီးသောအခါ ရလဒ်။
[
0 => [
0 => '123',
1 => 3
]
]
နမူနာ
အကွာအဝေး (offset) သတ်မှတ်ချက်ဖြင့် ရှာဖွေခြင်း။
<?php
preg_match('/\d+/', '123abc456', $matches, 0, 3);
var_dump($matches);
?>
ကုဒ်ကို run ပြီးသောအခါ ရလဒ်။
[0 => '456']
နမူနာ
Email လိပ်စာ၏ တရားဝင်မှုကို စစ်ဆေးခြင်း။
<?php
$email = 'test@example.com';
$res = preg_match('/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/', $email);
echo $res ? 'Valid' : 'Invalid';
?>
ကုဒ်ကို run ပြီးသောအခါ ရလဒ်။
'Valid'
ဆက်လက်လေ့လာရန်
-
preg_match_allဖန်ရှင်၊
ထိုဖန်ရှင်သည် စာကြောင်းအတွင်းရှိ ကိုက်ညီမှုအားလုံးကို ရှာဖွေပေးသည် -
preg_replaceဖန်ရှင်၊
ထိုဖန်ရှင်သည် Regular Expression အသုံးပြု၍ အစားထိုးမှုများကို လုပ်ဆောင်ပေးသည်