У меня есть строка чисел, которые представляют несколько дат. Допустим, это: 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]
Что еще я могу использовать, чтобы получить его в формате, который я хочу?
Вот решение, учитывая, что ваши дни и месяцы всегда представлены двумя цифрами. Например, 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;
?>
Надеюсь, что помог :-)
Взгляни на 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))
);