PHP - preg_match?

3 Cevap php

Ben ifadeleri ile ... Ben bazı online öğreticiler baktım çok iyi değilim, ama ben hala almıyorum. Temelde, bir dize bu gibi biçimlendirilir ise TRUE geri dönmek için çalışıyorum:

4 + boşluk + 2 hane rakam ve tarih dönüştürmek.

Yani, dize gibi görünecektir: 2010 02, ve çıkış için çalışıyorum February, 2010.

I preg_match kullanmaya çalışıyorum, ama elde tutmak

{Bir değiştirici değildir ...

EDIT

Ilk 2 tepkiler Per, bunu değişti, ama birinci ve ikinci aynı bilinmeyen değiştirici hata ölümcül bir hata alıyorum:

if(preg_match('/([0-9{4}]) ([0-9]{2})/iU',$path_part)) {
    $path_title = date("F, Y",strtotime(str_replace(" ","-", $path_title)));
}

Ayrıca, sadece ilk müdahale daha derinlemesine sürümünü denedim ve hata uzağa gider iken, bu çıkışını değişmez ...

$path_part = '2010 02';
if(preg_match('/^(\d{4}) (\d{2})$/',$path_part,$matches)) {
   $path_title = $mon[(int)$matches[2]] . " " . $matches[1]; // prints Feb 2010
}

3 Cevap

4 hane + boşluk + 2 basamaklı: bir dize bu gibi biçimlendirilir eğer TRUE dönmek için çalışıyorum

return preg_match(/^\d{4} \d{2}$/,$input);

Bugüne kadar dönüştürmek gibi bir şey deneyebilirsiniz:

$mon = array('','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
$date_str = "2010 02";

if(preg_match('/^(\d{4}) (\d{2})$/',$date_str,$matches))
{
        print $mon[(int)$matches[2]] . " " . $matches[1]; // prints Feb 2010
}

Bunu dene ...

preg_match('/([0-9{4}]) ([0-9]{2})/iU', $input);

Gerçek kod olarak herhangi bir detay sahip olmadan, aşağıdaki çalışması gerekir:

<?php

$str = '2010 02';

$months = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');

if(preg_match('/([0-9]{4}) ([0-9]{2})/', $str, $match) == 1){
    $year = $match[1];
    $month = (int) $match[2];
    echo $months[$month - 1] . ', ' . $year;
}else{
    //Error...
}

?>