我想在源代码中包含一个代码,以便从仅包含此行的日志文件中提取日期:
{"sumSt":"10481","lastUpdated":"3\/7\/2012, 4:58 am"}
我想提取2012年3月7日,而不是别的。 任何人都可以帮我这个吗?
答案 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;
答案 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']);
?>