使用正则表达式从文件中提取日期

时间:2013-12-03 12:27:38

标签: php regex

我想在源代码中包含一个代码,以便从仅包含此行的日志文件中提取日期:

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

我想提取2012年3月7日,而不是别的。 任何人都可以帮我这个吗?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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() - 返回根据给定格式字符串
  • 格式化的字符串

答案 2 :(得分:0)

非常感谢大家......了解新事物。我用json解码函数来提取它。这是我的代码片段。

<? 
$json = file(DOC_ROOT."/../logs/updated.log");
$decoded = json_decode($json[0],TRUE);
list($date, $time) = explode(", ", $decoded['lastUpdated']);
?>