preg_match ‌ဖန်ရှင်

preg_match ‌ဖန်ရှင်သည် Regular Expression တစ်ခုနှင့် စာကြောင်းတစ်ခုအတွင်း ကိုက်ညီမှုများကို ရှာဖွေပေးသည်။ ပထမပါရာမီတာအနေဖြင့် Regular Expression ပုံစံကို လက်ခံပြီး၊ ဒုတိယပါရာမီတာအနေဖြင့် ရှာဖွေမည့် စာကြောင်းကို လက်ခံသည်။ တတိယ (မဖြစ်မနေထည့်ရန်မလိုသော) ပါရာမီတာအနေဖြင့် တွေ့ရှိသော ကိုက်ညီမှုများကို သိမ်းဆည်းရန် array တစ်ခု၊ စတုတ္ထ (မဖြစ်မနေထည့်ရန်မလိုသော) ပါရာမီတာအနေဖြင့် flag များ၊ ပဉ္စမ (မဖြစ်မနေထည့်ရန်မလိုသော) ပါရာမီတာအနေဖြင့် ရှာဖွေမှုစတင်ရမည့် အကွာအဝေးကို လက်ခံသည်။

သဒ္ဒါဖွဲ့စည်းပုံ

phppreg_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<?php
  $res = preg_match('/\d+/', 'abc123');
  echo $res;
?>

ကုဒ်ကို run ပြီးသောအခါ ရလဒ်။

php1

နမူနာ

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

php<?php
  preg_match('/\d+/', 'abc123', $matches);
  var_dump($matches);
?>

ကုဒ်ကို run ပြီးသောအခါ ရလဒ်။

php[0 => '123']

နမူနာ

Regular Expression အတွင်း အမည်ပေးထားသော အစုများကို အသုံးပြုခြင်း။

php<?php
  preg_match('/(?P<name>\w+)\s+(?P<age>\d+)/', 'John 25', $matches);
  var_dump($matches);
?>

ကုဒ်ကို run ပြီးသောအခါ ရလဒ်။

php[
  0 => 'John 25',
  'name' => 'John',
  1 => 'John',
  'age' => '25',
  2 => '25'
]

နမူနာ

ကိုက်ညီမှု၏ နေရာကို ရယူရန် PREG_OFFSET_CAPTURE flag ကို အသုံးပြုခြင်း။

php<?php
  preg_match('/\d+/', 'abc123', $matches, PREG_OFFSET_CAPTURE);
  var_dump($matches);
?>

ကုဒ်ကို run ပြီးသောအခါ ရလဒ်။

php[
  0 => [
    0 => '123',
    1 => 3
  ]
]

နမူနာ

အကွာအဝေး (offset) သတ်မှတ်ချက်ဖြင့် ရှာဖွေခြင်း။

php<?php
  preg_match('/\d+/', '123abc456', $matches, 0, 3);
  var_dump($matches);
?>

ကုဒ်ကို run ပြီးသောအခါ ရလဒ်။

php[0 => '456']

နမူနာ

Email လိပ်စာ၏ တရားဝင်မှုကို စစ်ဆေးခြင်း။

php<?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 ပြီးသောအခါ ရလဒ်။

php'Valid'

ဆက်လက်လေ့လာရန်

  • preg_match_all ‌ဖန်ရှင်၊
    ထိုဖန်ရှင်သည် စာကြောင်းအတွင်းရှိ ကိုက်ညီမှုအားလုံးကို ရှာဖွေပေးသည်
  • preg_replace ‌ဖန်ရှင်၊
    ထိုဖန်ရှင်သည် Regular Expression အသုံးပြု၍ အစားထိုးမှုများကို လုပ်ဆောင်ပေးသည်