Kantong dalam Pencarian dengan Regular Expression di PHP
Misalkan kita memiliki sebuah string yang berisi sebuah domain:
<?php
$str = 'eee site.ru bbb';
?>
Mari kita cari domain tersebut dan pisahkan menjadi beberapa bagian: pisahkan nama domain dari zonanya. Untuk ini, kita akan menggunakan kantong (karung) dari regular expression.
Kantong merepresentasikan elemen array, ke dalamnya kita dapat memasukkan bagian-bagian yang ditemukan oleh regex. Dalam kasus kita, ke kantong pertama kita dapat memasukkan nama domain, dan ke kantong kedua - zonanya.
Mari kita lakukan. Pertama, tuliskan regex yang menemukan domain dalam string:
<?php
$reg = '#[a-z0-9_-]+\.[a-z]{2,}#';
?>
Sekarang mari dalam regex kita tentukan, bagian mana yang harus masuk ke kantong mana. Ini dilakukan dengan menggunakan tanda kurung. Mari kita soroti dengan tanda kurung bagian regex yang mencari nama domain, dan bagian yang mencari zona domain:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
Sekarang dalam fungsi preg_match, sebagai
parameter ketiga, tentukan sebuah variabel (namanya bebas):
<?php
preg_match($reg, $str, $res);
?>
Ke dalam variabel yang ditentukan akan masuk sebuah array dengan kantong-kantong yang ditemukan. Pada elemen ke-nol array akan berisi string yang ditemukan, pada elemen pertama - kantong pertama, pada elemen kedua - kantong kedua dan seterusnya:
<?php
preg_match($reg, $str, $res);
var_dump($res); // akan menampilkan ['site.ru', 'site', 'ru']
?>
Diberikan sebuah string dengan tanggal:
<?php
$str = '2025-12-31';
?>
Masukkan tahun, bulan, dan hari ke dalam kantong terpisah.
Diberikan sebuah string dengan nama file:
<?php
$str = 'index.html';
?>
Masukkan nama file dan ekstensinya ke dalam kantong terpisah.