【问题标题】:PHP count, add colons every 2 charactersPHP计数,每2个字符添加冒号
【发布时间】:2011-06-17 01:49:36
【问题描述】:

我有这个字符串

1010081-COP-8-27-20110616214459

我需要从这个字符串的末尾开始计算最后 6 个字符(因为从开头开始可能很长)

然后我需要在每 2 个字符后添加冒号。

所以从最后算起 6 个字符后就是

214459

添加冒号后,它将如下所示:

21:44:59

你能帮我实现它吗?

我真的不知道从哪里开始!

谢谢

【问题讨论】:

    标签: php count add


    【解决方案1】:

    您可以使用 substrstr_splitimplode 来做到这一点

    为了清晰起见,代码在多行中完成,但可以很容易地在一行中完成:

    $str = '1010081-COP-8-27-20110616214459';
    //Get last 6 chars
    $end = substr($str, -6);
    //Split string into an array.  Each element is 2 chars
    $chunks = str_split($end, 2);
    //Convert array to string.  Each element separated by the given separator.
    $result = implode(':', $chunks);
    

    【讨论】:

      【解决方案2】:
      echo preg_replace('/^.*(\d{2})(\d{2})(\d{2})$/', '$1:$2:$3', $string);
      

      在我看来,尽管该字符串具有您应该将其解析为数据的特定格式。比如:

      sscanf($string, '%u-%3s-%u-%u-%u', $id, $type, $num, $foo, $timestamp);
      $timestamp = strtotime($timestamp);
      echo date('Y-m-d H:i:s', $timestamp);
      

      【讨论】:

      • 或者'/^(.+)(\d{2})(\d{2})(\d{2})$/', '$2:$3:$4',如果他只想要时间的话。
      【解决方案3】:

      如果你只是想要时间:

      $time = rtrim(chunk_split(substr($s,-6),2,':'),':');
      

      【讨论】:

        【解决方案4】:
        $final = "1010081-COP-8-27-20110616214459";
        
        $c = substr($final, -2);
        $b = substr($final, -4, 2);
        $a = substr($final, -6, 2);
        
        echo "$a:$b:$c"; 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-12-15
          • 1970-01-01
          • 2013-04-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多