Php 使用正则表达式从文件中提取日期
我想在源代码中包含一段代码,以便从只包含以下行的日志文件中提取日期:Php 使用正则表达式从文件中提取日期,php,regex,Php,Regex,我想在源代码中包含一段代码,以便从只包含以下行的日志文件中提取日期: {"sumSt":"10481","lastUpdated":"3\/7\/2012, 4:58 am"} 我只想摘录2012年3月7日,其他什么都不想。 有人能帮我吗?这是JSON。当您可以使用以下各项时,无需使用正则表达式: 看起来像有效JSON对象的。不需要涉及正则表达式(在这个阶段)。也许这样解析它会更容易,然后使用lastUpdated索引来提取时间值: $str = '{"sumSt":"10481","last
{"sumSt":"10481","lastUpdated":"3\/7\/2012, 4:58 am"}
我只想摘录2012年3月7日,其他什么都不想。
有人能帮我吗?这是JSON。当您可以使用以下各项时,无需使用正则表达式:
看起来像有效JSON对象的。不需要涉及正则表达式(在这个阶段)。也许这样解析它会更容易,然后使用
lastUpdated
索引来提取时间值:
$str = '{"sumSt":"10481","lastUpdated":"3\/7\/2012, 4:58 am"}';
$json = json_decode( $str, true );
$time_value = $json[ "lastUpdated" ];
获得时间值后,可以使用strotime
功能结合date
将日期格式化为所需格式:
echo date( "d/m/Y" , strtotime( $time_value ) ), "\n";
参考资料:
- -获取JSON编码的字符串并将其转换为PHP变量
- -期望得到一个字符串。。。将尝试将该格式解析为Unix时间戳
- -返回根据给定格式字符串格式化的字符串
- 非常感谢各位。。。了解了一些新的东西。我使用json解码函数来提取它。这是我的代码片段
<?
$json = file(DOC_ROOT."/../logs/updated.log");
$decoded = json_decode($json[0],TRUE);
list($date, $time) = explode(", ", $decoded['lastUpdated']);
?>
2013年6月2日我没有看到这个问题的任何地方…@Deepu它是隐藏的,这是提取它的问题。怎么了?使用,这比正则表达式好得多。在这种情况下,你的答案会像OP问的那样给出2013年6月2日
。@ShankarDamodaran我认为他引用了错误的日期是公平的。@WayneWhitty,2/6/2013
与3\/7\/2012
@ShankarDamodaran有很大不同-这显然是一个打字错误。目标是从JSON中提取日期,但实际上并非如此。它只是同一类型的日期格式,只是转义了。@Lix你是如何假设JSON数据将不同于上面的代码将被破坏的点的?@Lix-Ha,没问题,我在那里非常困惑了一秒钟!
<?
$json = file(DOC_ROOT."/../logs/updated.log");
$decoded = json_decode($json[0],TRUE);
list($date, $time) = explode(", ", $decoded['lastUpdated']);
?>