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


Extracting date from a file using regex

我想在源代码中包含一段代码,从只包含以下行的日志文件中提取日期:

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

我只想提取2012年3月7日,没有其他内容。有人能帮我吗?

这看起来像一个有效的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()-返回根据给定格式字符串格式化的字符串

这是JSON。当您可以使用json_decode时,不需要regex:

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

代码板示例。

感谢大家。。。了解了一些新的东西。我使用json解码函数来提取它。这是我的代码片段。

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