Karakter dizilerindeki tarih ve zamanı parse etmek

Aşağıdaki gibi bir tarih stringimiz olsun, Örneğin MySQL datetime alanındaki veriler gibi.

‘2008-12-13 06:11:25’

Bunu Yıl, Ay, Gün, Saat, Dakika, Saniye şeklinde parse etmek isteyelim.

1
2
3
4
5
6
7
8
$tarih = "2008-12-13 06:11:25";
preg_match("/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/",$tarih,$diziTarih);
$yil = $diziTarih[1]; // 2008
$ay = $diziTarih[2];  // 12
$gun = $diziTarih[3]; //13
$saat = $diziTarih[4]; //06
$dakika = $diziTarih[5]; //11
$saniye = $diziTarih[6]; //25

preg_match işlevi düzenli ifade ile verilen eşleşmeyi bulduğu takdirde bunu $diziTarih dizisine doldurur.
$diziTarih[0] tüm eşleşmeyi verir yani ‘2008-12-13 06:11:25’ değerini.
Diğer bölümler 1 inci anahtardan başlayarak devam eder.

preg_match() Fonksiyonu

Sözdizimi:

1
int preg_match ( string desen, string metin,  array [eslesmeler] )

desen parametresi ile verilen metin bloğunu, metin içinde arar.
Bulunan eşleşmeleri eslesmeler dizisine doldurur. Aranan metin bloğu bulunursa 1, bulunamazsa 0 döndürür.

Örnek:

Aşağıdaki örnekte, düzenli ifadeler yardımıyla 300,5 rakamını metinde alıyoruz.

1
2
3
4
5
6
7
8
9
10
11
12
13
$metin= "Microsoftun değeri 300,5 milyar dolardır. ";
// \d+ ile herhangi bir ondalik sayıdan bir veya daha fazla kere olacağını, bize 300'ü verir
// sonra bir virgül olacağını
// sonra \d ile herhangi bir ondalık sayıdan bir tane olmasını istiyoruz.
$desen = "/\d+,\d/";
if(preg_match($desen,$metin,$eslesmeler))
{
print $eslesmeler[0];//Çıktı:300,5
}
else
{
print "Eşleşme bulunamadı.";
}