⊗ppPmRgNP 255 of 447 menu

Các Nhóm Bắt Giữ Có Tên Trong Biểu Thức Chính Quy PHP

Giả sử chúng ta muốn sử dụng preg_match để tách ngày tháng thành ngày, tháng và năm. Hãy sử dụng các nhóm bắt giữ cho việc này:

<?php $str = '2025-10-29'; $reg = '#(\d{4})-(\d{2})-(\d{2})#'; preg_match($reg, $str, $match); var_dump($match); // sẽ xuất ra ['2025-10-29', '2025', '10', '29'] ?>

Như bạn thấy, kết quả chúng ta nhận được là một mảng, trong đó phần tử thứ 0 là toàn bộ ngày tháng, thứ nhất - năm, thứ hai - tháng, thứ ba - ngày.

Tuy nhiên, đôi khi sẽ thuận tiện nếu nhận được nội dung của các nhóm bắt giữ dưới dạng mảng kết hợp. Tức là trong trường hợp của chúng ta, thật tốt nếu nhận được mảng như thế này:

[ 'year' => '2025', 'month' => '10', 'day' => '29' ]

Để làm điều này, trong biểu thức chính quy có cú pháp đặc biệt. Đây là nó: (?<name>pattern), trong đó pattern là biểu thức chính quy, còn name là tên của nhóm bắt giữ.

Hãy viết lại biểu thức chính quy cho ngày tháng của chúng ta bằng các nhóm bắt giữ có tên:

<?php $str = '2025-10-29'; $reg = '#(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})#'; preg_match($reg, $str, $match); var_dump($match); ?>

Kết quả chúng ta sẽ có một mảng kết hợp, trong đó các khóa là tên của các nhóm bắt giữ, còn các giá trị là những gì được bắt trong chúng:

[ 'year' => '2025', 'month' => '10', 'day' => '29', ]

Thực tế, trong mảng kết quả, các giá trị của nhóm bắt giữ sẽ có thể truy cập được cả bằng tên lẫn bằng số thứ tự. Tức là, ví dụ, năm sẽ có thể truy cập được bằng khóa 'year' và bằng số 1, tháng - bằng khóa 'month' và bằng số 2, và tương tự:

[ 'year' => '2025', 'month' => '10', 'day' => '29', 1 => '2025', 2 => '10', 3 => '29' ]

Các nhóm bắt giữ có tên được mô tả còn có một số cú pháp thay thế khác: (?P<name>pattern)(?'name'pattern).

Cho một chuỗi chứa thời gian:

<?php $str = '12:59:59'; ?>

Hãy đặt giờ, phút và giây vào các nhóm bắt giữ có tên riêng biệt.

Viết một hàm, trong mảng kết quả, xóa tất cả các nhóm bắt giữ được đánh số, chỉ giữ lại các nhóm có tên.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối