preg_match Fonksiyonu

preg_match fonksiyonu, bir dizgede düzenli ifade eşleşmelerini arar. İlk parametre olarak düzenli ifade kalıbını, ikinci parametre olarak arama yapılacak dizgeyi, üçüncü parametre olarak (isteğe bağlı) bulunan eşleşmeleri kaydetmek için bir dizi, dördüncü parametre olarak (isteğe bağlı) bayrakları, beşinci parametre olarak (isteğe bağlı) aramanın başlangıç konumunu alır.

Sözdizimi

phppreg_match(pattern, subject, [matches], [flags], [offset]);

Bayraklar

Bayrak Sabit Açıklama
PREG_PATTERN_ORDER 1 Sonuçlar kalıplara göre sıralanır (varsayılan)
PREG_SET_ORDER 2 Sonuçlar eşleşme setlerine göre sıralanır
PREG_OFFSET_CAPTURE 256 Eşleşmenin dizgedeki konumunu döndürür
PREG_UNMATCHED_AS_NULL 512 Eşleşmeyen alt kalıplar NULL olarak döndürülür

Örnek

Bir dizgenin rakam içerip içermediğini kontrol edelim:

php<?php
  $res = preg_match('/\d+/', 'abc123');
  echo $res;
?>

Kodun çalıştırılma sonucu:

php1

Örnek

Bir dizgedeki tüm rakamları bir diziye çıkaralım:

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

Kodun çalıştırılma sonucu:

php[0 => '123']

Örnek

Düzenli ifadede adlandırılmış grupların kullanımı:

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

Kodun çalıştırılma sonucu:

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

Örnek

Eşleşme konumunu almak için PREG_OFFSET_CAPTURE bayrağının kullanımı:

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

Kodun çalıştırılma sonucu:

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

Örnek

Başlangıç konumu (offset) belirterek arama:

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

Kodun çalıştırılma sonucu:

php[0 => '456']

Örnek

E-posta adresi geçerlilik kontrolü:

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';
?>

Kodun çalıştırılma sonucu:

php'Valid'

Ayrıca Bakınız

  • preg_match_all fonksiyonu,
    bir dizgedeki tüm eşleşmeleri arar
  • preg_replace fonksiyonu,
    düzenli ifadeye göre değiştirme işlemi yapar