Diskon kelas baru hingga 25%! Masukkan kupon "lebihcepat" di kelas ini

X
Logo Koala Skodev mengetik

Skodev

Belajar coding dalam bahasa Indonesia

PREG_MATCH_ALL

Pelajari bagaimana menggunakan fungsi preg_match_all di PHP untuk mencocokkan pola regex dalam string dengan panduan langkah demi langkah.

Fungsi preg_match_all merupakan salah satu fungsi yang sangat berguna dalam PHP untuk melakukan pencocokan ekspresi regular (regex). Fungsi ini digunakan untuk mencari semua kecocokan dari pola tertentu dalam suatu string dan menampungnya dalam array.

Mengenal Fungsi preg_match_all

Fungsi preg_match_all akan mencari kecocokan pola yang ditentukan oleh regex di dalam string target. Berbeda dengan preg_match yang hanya mencari satu kecocokan pertama, preg_match_all akan mencari semua kecocokan yang mungkin dan mengembalikan jumlah kecocokan yang ditemukan.

Sintaks dari fungsi ini adalah:

preg_match_all(pattern, input, matches, flags, offset);
  • pattern: Pola regex yang ingin dicocokkan.
  • input: String yang akan diuji dengan pola regex.
  • matches: Array yang akan diisi dengan hasil kecocokan.
  • flags: Opsi yang mengubah perilaku pencocokan.
  • offset: Posisi dalam string input di mana pencarian akan dimulai.

Contoh Kode

Berikut adalah contoh untuk mencari semua digit dalam suatu string:

<?php
$text = "Tahun 2023 akan penuh dengan kesempatan!";
preg_match_all('/\d+/', $text, $matches);
print_r($matches);
?>

Output yang akan dihasilkan adalah sebuah array dari kecocokan angka di dalam string:

Array
(
    [0] => Array
        (
            [0] => 2023
        )
)

Flag pada preg_match_all

Kamu juga bisa menambahkan flag untuk mengubah output dari fungsi ini. Misalnya, menggunakan PREG_PATTERN_ORDER atau PREG_SET_ORDER.

Menggunakan PREG_PATTERN_ORDER

Flag PREG_PATTERN_ORDER akan membuat array matches menyimpan kecocokan berdasarkan pola yang ditemukan:

<?php
$text = "Tahun 2023 dan 2050!";
preg_match_all('/(\d{2})(\d{2})/', $text, $matches, PREG_PATTERN_ORDER);
print_r($matches);
?>

Outputnya adalah:

Array
(
    [0] => Array
        (
            [0] => 2023
            [1] => 2050
        )
    [1] => Array
        (
            [0] => 20
            [1] => 20
        )
    [2] => Array
        (
            [0] => 23
            [1] => 50
        )
)

Menggunakan PREG_SET_ORDER

Sedangkan flag PREG_SET_ORDER akan mengelompokkan hasil kecocokan sesuai dengan setiap ocurrence:

<?php
$text = "Tahun 2023 dan 2050!";
preg_match_all('/(\d{2})(\d{2})/', $text, $matches, PREG_SET_ORDER);
print_r($matches);
?>

Outputnya adalah:

Array
(
    [0] => Array
        (
            [0] => 2023
            [1] => 20
            [2] => 23
        )
    [1] => Array
        (
            [0] => 2050
            [1] => 20
            [2] => 50
        )
)

Penyesuaian Offset

Kita juga dapat menentukan offset sebagai parameter keempat. Ini memungkinkan pencarian kecocokan dimulai dari posisi tertentu dalam string input.

<?php
$text = "Tahun 2023, 2050, dan 2077 akan menjadi tahun yang spesial!";
preg_match_all('/\d+/', $text, $matches, PREG_OFFSET_CAPTURE, 10);
print_r($matches);
?>

Dengan menggunakan PREG_OFFSET_CAPTURE, kita juga mendapatkan info posisi dari setiap kecocokan dalam string. Contoh output:

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => 2023
                    [1] => 6
                )
            [1] => Array
                (
                    [0] => 2050
                    [1] => 12
                )
            [2] => Array
                (
                    [0] => 2077
                    [1] => 22
                )
        )
)

Dengan memahami preg_match_all, kamu bisa mengambil banyak informasi dari sebuah string dengan mudah dan cepat. Kamu cukup menentukan pola yang tepat, dan PHP akan melakukan pencarian kompleks untukmu dengan fungsi ini.

👈🏼 preg_match
preg_replace 👉🏼