我想知道是否有人可以提供幫助,因爲我不確定在哪裏尋找。PHP代碼兼容性
我有一箇舊網站運行在共享服務器上,我幾乎沒有控制 。我有一個腳本在我的其他網站上運行良好,並且希望將其添加到此舊版網站的 ,但它無法正確顯示時間。我所有其他的 網站都運行在PHP 5+上,但是這是我現在發現的 運行PHP 4.4.8的第一個PHP腳本。
因此,我已經將問題縮小到更大的腳本中的功能,並認爲這是不兼容性所在。該代碼基本上將提供的數據 並將其轉換爲天,小時,分鐘&秒。
function time_left ($e_time) {
$e_time = strtotime($e_time);
$e_time = substr($e_time, 0, 10);
$time_stamp = explode("-", date('n-d-Y-H-i-s', $e_time));
$e_time = mktime($time_stamp[3], $time_stamp[4], $time_stamp[5], $time_stamp[0], $time_stamp[1], $time_stamp[2]);
$server_time = time();
$diff_time = ($e_time - $server_time);
if ($diff_time < 0) $diff_time = 0;
unset($time_stamp);
# get days remaining
$time_stamp[1] = floor($diff_time/60/60/24);
if($time_stamp[1] <= 0){$time_stamp[1] = "";} else {$time_stamp[1] .= "d ";}
# get hours remaining
$time_stamp[3] = floor(($diff_time - $time_stamp[1]*60*60*24)/60/60);
if($time_stamp[3] <= 0){$time_stamp[3] = "";} else {$time_stamp[3] .= "h ";}
# get minutes remaining
$time_stamp[4] = floor(($diff_time - $time_stamp[1]*60*60*24 - $time_stamp[3]*60*60)/60);
if($time_stamp[4] <= 0){$time_stamp[4] = "";} else {$time_stamp[4] .= "m ";}
return $time_stamp[1] . $time_stamp[3] . $time_stamp[4];
}
任何人都可以發現上述代碼中的任何內容,您認爲這可能與PHP 4.4不兼容?
目前如果我回顯原始時間數據變量,它會以原始形式顯示它,但當它通過上面的功能 時,它不顯示任何內容。正如我所說我沒有任何問題,在運行PHP 5+的服務器上的這種編碼
非常感謝您的任何幫助!
*新增
好吧,我想我已經分離出的問題是什麼,是的strtotime
原始輸入該得到的strtotime是這樣的:2013-03-18T21:38:58.000Z
目前因爲劇本是PHP 4.4下運行,如果我贊同這一點:
$ e_time =的strtotime($ e_time);
它總是返回一個-124的值,但我不知道爲什麼?
您正在創建一個名爲'time'的函數,它與名爲'time'的內置函數衝突。即使這是正確的,你的函數將是無限遞歸的(它在第6行調用'time()')。你確定這個工作正在運行PHP5嗎? – 2013-03-18 20:26:55
@ColinMorelli哈哈不錯。我沒有看到。 – ITroubs 2013-03-18 20:28:05
道歉現在已經編輯,以顯示正確的版本。 – onelove 2013-03-18 20:39:46