Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用正则表达式从文件中提取日期_Php_Regex - Fatal编程技术网

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']);
      ?>