【问题标题】:Explode Task Time [closed]爆炸任务时间[关闭]
【发布时间】:2012-10-05 21:12:19
【问题描述】:

我的一个 csv 导入数据库的字段值看起来像这样 '24h 30m'

如何分解这两组数字?这是我到目前为止所拥有的

$tasktime  = "24h 30m";
$pieces = explode("h ", $tasktime);
echo $pieces[0]; // want this to echo 24
echo $pieces[1]; // want this to echo 30

【问题讨论】:

    标签: php explode


    【解决方案1】:

    非常简单 (demo)

    $pieces = array_map('intval', explode(' ', "24h 30m"));
    

    这将用空格分割字符串,然后从两个元素中的每一个中获取整数值。

    进一步参考:

    【讨论】:

    • 他的cmets似乎暗示他想剪掉这些字母?无论如何都要 +1
    • @IsaacFife 应用 intval 后,我的解决方案中不会出现任何字母
    • 啊,很好。我这周刚开始使用php。我可能应该闭嘴。 ^^
    【解决方案2】:
    $tasktime  = "24h 30m";
    $pieces = explode("h ", $tasktime);
    $pieces[1] = rtrim($pieces[1], "m");
    echo $pieces[0]; // want this to echo 24
    echo $pieces[1]; // want this to echo 30
    

    我其实不懂php,但这对我来说很有意义。

    【讨论】:

      【解决方案3】:

      这行得通。谢谢!

      $tasktime  = "24h 30m";
      $pieces = array_map('intval', explode(' ', $tasktime));
      

      【讨论】:

        【解决方案4】:

        如果它始终是这种格式,您可以这样做以获得DateInterval 对象。

        $tasktime  = "24h 30m";    
        $interval = new DateInterval('PT' . strtoupper(str_replace(' ', '', $tasktime)));
        
        print_r($interval);
        

        输出

        DateInterval Object
            (
                [y] => 0
                [m] => 0
                [d] => 0
                [h] => 24
                [i] => 30
                [s] => 0
                [invert] => 0
                [days] =>
            )
        

        【讨论】:

        • 在 DateInterval 对象行上出现错误
        • 对不起,这只是 print_r 的输出,以表明它正确地拆分了它。您可以使用 $interval->h 获取小时数,使用 $interval->i 获取分钟数,或者使用它对 DateTime 对象进行操作。如果您只需要这些值,则以下示例之一更简单。
        【解决方案5】:

        以下是您可以将其编写为正则表达式的方式:

        $tasktime = "24h 30m";
        preg_match('/(\d+)h (\d+)m/', $tasktime, $pieces);
        echo $pieces[1]; // echoes 24
        echo $pieces[2]; // echoes 30
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-01
          • 2012-01-13
          • 2015-03-21
          • 2016-05-18
          • 2016-02-08
          • 1970-01-01
          相关资源
          最近更新 更多