2013-12-03 6 views
1

Я хотел включить код в мой исходный код для извлечения даты из файла журнала, который содержит только эту строку:Извлечение даты из файла, используя регулярное выражение

{"sumSt":"10481","lastUpdated":"3\/7\/2012, 4:58 am"} 

Я хочу, чтобы извлечь только 3/7/2012 и ничего больше. Может ли кто-нибудь помочь мне с этим?

+2

я не видел '2/6/2013' где-нибудь в этом вопросе ... –

+0

@Deepu он скрыт, что проблема с извлечением ее. – Tafari

+1

Что случилось с ['json_decode'] (http://codepad.org/CPS9703P)? –

ответ

1

Это похоже на действительный объект JSON. Не нужно вмешиваться в регулярные выражения (на данном этапе). Возможно, было бы легче разобрать его как таковой, а затем использовать индекс lastUpdated для извлечения значения времени:

$str = '{"sumSt":"10481","lastUpdated":"3\/7\/2012, 4:58 am"}'; 
$json = json_decode($str, true); 
$time_value = $json[ "lastUpdated" ]; 

После того, как у вас есть значение времени, вы можете использовать функцию strtotime в сочетании с date для форматирования даты в что когда-либо формат вы хотите:

echo date("d/m/Y" , strtotime($time_value)), "\n"; 

Ссылки:

  • json_decode() - принимает закодированную строку JSON и преобразует его в переменную PHP.
  • strtotime() - Рассчитывает быть дана строка ... будет пытаться разобрать этот формат в Отметка времени Unix
  • date() - возвращает строку, отформатированную в соответствии с заданной строкой формата
+0

Ваш ответ даст '2/6/2013', как OP спросил? –

+1

@ShankarDamodaran Я считаю справедливым предположить, что он процитировал неправильную дату. –

+0

@WayneWhitty, '2/6/2013' гораздо больше отличается от' 3 \/7 \/2012' –

1

Это JSON. Нет необходимости в регулярных выражениях, когда вы можете использовать json_decode:

<?php 

$str = '{"sumSt":"10481","lastUpdated":"3\/7\/2012, 4:58 am"}'; 
$decoded = json_decode($str, true); 
list($date, $time) = explode(", ", $decoded['lastUpdated']); 
echo $date; 

Codepad example.

+0

@Lix Как вы делаете предположение, что данные JSON будут отличаться от точки, где код выше сломается? –

+1

@ Lix Ha, без проблем, я был очень смущен там на секунду! –

0

спасибо много людей. .. узнал что-то новое. Я использовал функцию декодирования json для ее извлечения. вот мой фрагмент кода.

<? 
$json = file(DOC_ROOT."/../logs/updated.log"); 
$decoded = json_decode($json[0],TRUE); 
list($date, $time) = explode(", ", $decoded['lastUpdated']); 
?> 
Смежные вопросы