Количество PHP, добавляйте двоеточия каждые 2 символа


У меня есть эта строка

1010081-COP-8-27-20110616214459

Мне нужно посчитать последние 6 символов, начиная с конца этой строки (потому что она может быть длинной, начиная с начала)

Затем мне нужно добавить двоеточия после каждых 2 символов.

Таким образом, после подсчета 6 символов с конца будет

214459

После добавления двоеточий это будет выглядеть так:

21:44:59

Можете ли вы помочь мне достичь этого?

Я действительно не знаю, с чего начать!

Спасибо ты

Author: DiegoP., 2011-06-17

4 answers

Вы можете сделать это с помощью substr, str_split и implode

Код выполнен в нескольких строках для ясности, но его легко можно выполнить цепочкой в одной строке:

$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);
 12
Author: Explosion Pills, 2016-08-25 18:55:39
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);
 12
Author: deceze, 2011-06-17 03:17:44

Если вам просто нужно время:

$time = rtrim(chunk_split(substr($s,-6),2,':'),':');
 1
Author: Matthew, 2011-06-17 01:56:06
$final = "1010081-COP-8-27-20110616214459";

$c = substr($final, -2);
$b = substr($final, -4, 2);
$a = substr($final, -6, 2);

echo "$a:$b:$c"; 
 1
Author: Tallboy, 2011-06-17 01:59:30