Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > парсинг строки


Автор: anonymous 3.11.2005, 11:02
Здравствуйте.
Есть строка - временной штамп в формате yyyymmddhhmmss. Надо разделить его на составляющие:
год, месяц, день, час, минута, секунда. Что я попробовал, не срабатывает:

Код

<?php
$TmStamp='20051103103210';
echo("Date: $TmStamp<br>\n");
//0
$Date=array();
preg_match('/^\d{4}\d{2}\d{2}\d{2}\d{2}\d{2}$/s',$TmStamp,$Date);
printf("Date: %4s.%2s.%2s, %2s:%2s:%2s<br>\n",$Date[0],$Date[1],$Date[2],$Date[3],$Date[4],$Date[5]);
//1
printf("Date: %s<br>\n",date('Y.m.d, H:i:s',strtotime($TmStamp)));
//2
printf("Date: %4s.%2s.%2s, %2s:%2s:%2s<br>\n",unpack("A4A2A2A2A2A2",$TmStamp));
?>


Прошу помощи. Заранее, спасибо.

Автор: anonymous 3.11.2005, 11:28
Всё, вопрос снимается. Это надо было делать так:
Код

<?php
$TmStamp='20051103083510';
echo("Date: $TmStamp<br>\n");
$Date=array();
eregi('(....)(..)(..)(..)(..)(..)',$TmStamp,$Date);
printf("Date: %4s.%2s.%2s, %2s:%2s:%2s<br>\n",/* $Date[0], */$Date[1],$Date[2],$Date[3],$Date[4],$Date[5],$Date[6]);
?>


Автор: Bikutoru 3.11.2005, 11:29
А зачем так сложно?
Код

<?php

$dateString = '20051103103210';

$year   = substr($dateString, 0, 4);
$month  = substr($dateString, 4, 2);
$day    = substr($dateString, 6, 2);
$hour   = substr($dateString, 8, 2);
$minute = substr($dateString, 10, 2);
$second = substr($dateString, 12, 2);

?>


Автор: Mal Hack 3.11.2005, 13:01
Как вариант:
Код

<?php

$dateString = '20051103103210';

$dateString = wordwrap( $dateString , 2 , "|" , 1 );

$arr = explode( "|" , $dateString );

$arr[1] = $arr[0] . $arr[1];

print_r( $arr );

?>

Работаем с массивом начиная с 1 ! элемента.
Добавлено @ 13:02
Все-таки меньше раз функции вызываются smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)