【问题标题】:Extract date from string + PHP从字符串中提取日期 + PHP
【发布时间】:2014-01-13 06:36:22
【问题描述】:

您好,我想从给定的字符串中获取日期“2014 年 1 月 8 日”。

Wednesday, 8 January 2014 at 17:40

如果能用preg_replace就好了?

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 我不知道 preg_replace 但我现在使用它 $res = date('M d, Y',strtotime(trim(substr( $res,10,15)))) ;跨度>
  • 我怀疑你是否需要使用 preg_replace,因为它的格式很好,用strtotime 将其转换为日期应该没有问题,然后使用date 格式化它@ 987654325@
  • 这个字符串给我默认值 January 01,1970

标签: php regex string preg-replace


【解决方案1】:

PHP strtotime 不善于理解“at”这个词,所以这段代码应该可以工作并且不会返回 1970:

$date = date("d F Y", strtotime(str_replace('at ','',"Wednesday, 8 January 2014 at 17:40")));
echo $date;

您可以随意更改格式;只需更改字母d F Y 即可找到返回不同值的字母列表in the manual

【讨论】:

    【解决方案2】:

    刚刚用explode()函数解决了:

    $str = "Wednesday, 8 January 2014 at 17:40";
    $ex1 = explode(", ", $str);
    $ex2 = explode(" at", $ex1[1]);
    $value = $ex2[0];
    echo $value;
    

    【讨论】:

      【解决方案3】:

      DateTime 课程让您的生活更简单!

      <?php
      $date = DateTime::createFromFormat('l, j F Y \at G:i','Wednesday, 8 January 2014 at 17:40');
      echo $date->format('j F Y'); //"prints" 8 January 2014
      

      【讨论】:

        【解决方案4】:

        试试这样的正则表达式:

        $str = 'Wednesday, 8 January 2014 at 17:40';
        $date = preg_replace('/\w+,\s([a-zA-Z0-9\s]+)\sat\s([0-9:]+)/i', '$1', $str);
        echo $date;
        

        【讨论】:

          【解决方案5】:

          这是为您获取 2014 年 1 月 8 日的简单代码 :)

           <?php
              $txt = 'Wednesday, 8 January 2014 at 17:40';
          preg_match('#(?<=,\s)\d{1,2}\s\w+\s\d{1,4}(?=\sat)#', $txt, $result);
              ?>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-02-17
            • 2014-07-17
            • 2020-08-14
            • 2016-06-24
            • 1970-01-01
            相关资源
            最近更新 更多