2010-02-07 2 views
1

Я не очень хорошо разбираюсь в выражениях ... Я просмотрел некоторые онлайн-уроки, но я до сих пор не понимаю. В принципе, я пытаюсь вернуть TRUE, если строка отформатирована следующим образом:PHP - preg_match?

4 цифры + пробел + 2 цифры и конвертировать их в дату.

Итак, строка будет выглядеть так: 2010 02, и я пытаюсь вывести February, 2010.

Я пытаюсь использовать preg_match, но я получаю

{ is not a modifier...

EDIT

В первые 2 ответов, я изменил его, но я получаю фатальную ошибку на первом и то же неизвестная ошибка модификатор на второй:

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

Кроме того, только попробовал более глубокий вариант в первом RESPONS е, и в то время как ошибка уходит, это не меняет выход ...

$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 
} 
+0

/([0-9 {4}]) ([0-9] {2})/есть неверен. Использовать/([0-9] {4}) ([0-9] {2})/или /(\ d {4}) (\ d {2})/ – codaddict

ответ

3

Я пытаюсь вернуть TRUE, если строка форматируется следующим образом: 4 цифры + пространство + 2 цифры

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

для преобразования на сегодняшний день вы можете попробовать что-то вроде:

$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 
} 
+0

Пробовал это, но я получаю смертельный синтаксическая ошибка ... – phpN00b

+0

, пожалуйста, отредактируйте свой вопрос и разместите свой код. – codaddict

+0

Хорошо, я просто сделал. Я попробовал более длинное объяснение, и ошибки исчезли, но он не выводит ничего другого. Все еще распечатывается 2010 02 – phpN00b

0

Попробуйте это ...

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

Это неправильно. Первая группа персонажей смешивается с барабанщиком. Это должно быть '[0-9] {4}' вместо –

+0

Я пробовал это, и я получаю ту же ошибку: warning: preg_match() [function.preg-match]: Неизвестный модификатор '{' – phpN00b

0

Не имея каких-либо деталей, как на ваш фактический код, следующий должно работать:

<?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... 
} 

?> 
0
$in = "2010 02"; 
if(preg_match('/([0-9]{4}) ([0-9]{2})/i', $in, $matches)) { 
     echo date("F Y", strtotime($matches[2] . "/1/" . $matches[1])); 
}