Mar. 31st, 2011

yuri_kurenkov: (dr emmett brown)
При апгрейде сервера вместо PHP4, работающего исправно на старом сервере с сентября 2005 года, установил на новом сервере PHP52 в целях совместмости с новым софтом. PHP53 побаиваюсь. В старой софтине при тестировании функционала обнаружился какой-то глюк. В результате раскопок была обнаружена неработающая функция

function date2time($date)
{
        list($day,$time)=explode(' ',$date);
        $day = explode('-',$day);
        echo "time=". $time;
        $time = explode(':',$time);
        $timest = mktime($time[0],$time[1],$time[2],$day[1],$day[2],$day[0]);
        echo "timest=".$timest;
        return $timest;
}

Анализы показали, что не работает mktime(), потому что $time=='' и, соответствено, $time[0]=='', $time[1]=='' и $time[2]==''.  В PHP4 конструкция mktime(,,,$day[1],$day[2],$day[0]); прокатывала без проблем, а PHP5 стал критичнее относится к синтаксису и mktime() вынь да положь все параметры в виде int. Не парясь с проверкой всех элементов массива time[], тем, более, что в этом случае их нет, грязным, но логически верным хаком решил проблему:

function date2time($date)
{
        list($day,$time)=explode(' ',$date);
        $day = explode('-',$day);
        echo "time=". $time;
        if ($time=='') $time="00:00:00";
        $time = explode(':',$time);
        $timest = mktime($time[0],$time[1],$time[2],$day[1],$day[2],$day[0]);
        echo "timest=".$timest;
        return $timest;
}

Profile

yuri_kurenkov: (Default)
yuri_kurenkov

August 2011

S M T W T F S
 1 23 456
78910111213
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 25th, 2017 12:41 am
Powered by Dreamwidth Studios