2011-01-20
Функция преобразования даты из ISO 8601
Потребовалось обработать логи в которых дата хранилась примерно в таком формате 2010-12-03T18:34:33-0500. К сожалению в PHP нет толковой функции для преобразования строкового представления даты в timestamp. Как показала практика strtodate совершенно не учитывает последние четыре знака в строке которые она просто отбрасывет.
Пришлось парсерить строчку ручками и вот что получилось:
function covertdate($date){ preg_match('/(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})([-+])(\d{2})(\d{2})/', $date,$res); list($d,$year,$month,$day,$hour,$minute,$second,$digit,$zonehours,$zoneminutes) = $res; $offset = ((int)($digit."1"))*($zonehours*3600+$zoneminutes*60); $timestamp = gmmktime($hour,$minute,$second,$month,$day,$year)-$offset; return $timestamp; }
разрешены только теги br, font, span, p, strong, u, p, blockquote, a, div, img - остальные будут безжалостно удаляться
комментарии:
Ошыбка есть, заканчиваться должно ([-+])(\d{2}):(\d{2})/' , а у тебя двоеточия нет )))