Как я могу отформатировать серию дат из длинной строки чисел?

У меня есть строка чисел, которые представляют несколько дат. Допустим, это: 112620141129201412252014. Это число соответствует 26 ноября 2014 года — 29 ноября 2014 года — 25 декабря 2014 года.

Я бы хотел отформатировать его так, чтобы он выглядел примерно так [11, 26, 2014], [11, 29, 2014], [12, 25, 2014].

Я могу получить это почти так, как я хочу, с помощью Wordwrap:

$date = wordwrap( $date , 8, '], [' , true );
$date = "[" . $date . "]";

echo $date;

Возвращает: [11262014], [11292014], [12252014]

Что еще я могу использовать, чтобы получить его в формате, который я хочу?

1

Решение

Вот решение, учитывая, что ваши дни и месяцы всегда представлены двумя цифрами. Например, 3 ноября 2014 года должно быть 11032014 и не 1132014,

<?php

$list = "112620141129201412252014";
$newlist = "";

while (!empty($list))
{
$newlist = $newlist . "[" . substr($list, 0, 2) . "," . substr($list, 2, 2) . "," . substr($list, 4, 4) . "]";
$list = substr($list, 8);  // remove from $list the date we just added to $newlist
if (!empty($list))
{
$newlist = $newlist . ",";
}
}

echo $newlist;

?>

Надеюсь, что помог :-)

0

Другие решения

Взгляни на str_split() а также substr_replace() функции:

echo implode(', ', array_map(function($val) {
$val = substr_replace($val, ',', 4, 0);
$val = substr_replace($val, ',', 2, 0);
return '[' . $val . ']';
}, str_split($input_string, 8))
);

демонстрация

0

По вопросам рекламы [email protected]