⊗ppPmRgNP 255 of 447 menu

PHP'de Düzenli İfadelerde İsimli Yakalama Grupları

Diyelim ki preg_match kullanarak bir tarihi gün, ay ve yıla ayırmak istiyoruz. Bunun için yakalama gruplarını kullanalım:

<?php $str = '2025-10-29'; $reg = '#(\d{4})-(\d{2})-(\d{2})#'; preg_match($reg, $str, $match); var_dump($match); // çıktı: ['2025-10-29', '2025', '10', '29'] ?>

Gördüğünüz gibi, sonuçta sıfırıncı elemanında tüm tarihin, birincisinde - yılın, ikincisinde - ayın, üçüncüsünde - günün bulunduğu bir dizi elde ediyoruz.

Ancak bazen, yakalama gruplarının içeriğini ilişkisel bir dizi olarak almak uygun olurdu. Yani bizim durumumuzda şöyle bir dizi elde etmek iyi olurdu:

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

Bunun için düzenli ifadelerde özel bir sözdizimi vardır. İşte bu: (?<name>pattern), burada pattern - düzenli ifade, name - ise yakalama grubunun adıdır.

Şimdi tarih için düzenli ifademizi isimli yakalama gruplarıyla yeniden yazalım:

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

Sonuçta, anahtarların yakalama gruplarının isimleri, değerlerin ise onların içine düşenler olduğu bir ilişkisel dizi elde edeceğiz:

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

Aslında, sonuç dizisinde yakalama gruplarının değerleri hem isimle hem de sıra numarasıyla erişilebilir olacaktır. Yani, örneğin, yıla 'year' anahtarı ve 1 numarasıyla, aya - 'month' anahtarı ve 2 numarasıyla ve bu şekilde erişilebilir:

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

Açıklanan isimli yakalama gruplarının birkaç alternatif sözdizimi daha vardır: (?P<name>pattern) ve (?'name'pattern).

Zaman içeren bir string verilmiştir:

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

Saat, dakika ve saniyeleri ayrı isimli yakalama gruplarına yerleştirin.

Sonuç dizisindeki tüm numaralı yakalama gruplarını silen, sadece isimlileri bırakan bir fonksiyon yazın.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet