Tất cả các kết quả khớp vào các nhóm bắt giữ qua regex trong PHP
Bằng hàm preg_match_all, bạn có thể
tách tất cả các kết quả khớp tìm được vào các nhóm bắt giữ.
Hãy xem cách thực hiện điều này.
Giả sử, chẳng hạn, chúng ta có một chuỗi chứa các tên miền:
<?php
$str = 'site.ru site123.com my-site.net';
?>
Hãy viết một biểu thức chính quy để tìm kiếm tên miền, tách phần tên và phần đuôi thành các nhóm bắt giữ riêng biệt:
<?php
$reg = '#([a-z0-9_-]+)\.([a-z]{2,})#';
?>
Kết quả sẽ được đưa vào tham số thứ ba của hàm:
<?php
preg_match_all($reg, $str, $res);
var_dump($res);
?>
Kết quả chúng ta nhận được sẽ là một mảng hai chiều. Phần tử số 0 của mảng này sẽ chứa nội dung của các nhóm bắt giữ số 0 (tức là phần khớp với toàn bộ biểu thức chính quy), phần tử thứ hai sẽ chứa nội dung của các nhóm bắt giữ số 1 và cứ tiếp tục như vậy:
<?php
[
['site.ru', 'site123.com', 'my-site.net'],
['site', 'site123', 'my-site'],
['ru', 'com', 'net'],
]
?>
Cho một chuỗi chứa ngày tháng:
<?php
$str = '2023-10-29 2024-11-30 2025-12-31';
?>
Tìm tất cả các ngày, tách riêng năm, tháng và ngày vào các nhóm bắt giữ riêng biệt.