Различное поведение PHP-скрипта онлайн - PullRequest
0 голосов
/ 28 декабря 2011

У меня следующая проблема. У меня есть сценарий, который получает Airdate телешоу, и я изменяю его, прежде чем сохранить его в своей базе данных. Локально на моем локальном хосте это работает отлично, но когда я попробовал это онлайн и загрузил это к своему веб-серверу, это показывает другое поведение. Понятия не имею, почему это так.

Вот несколько примеров:


Данные, которые я получаю: в эфир 1/22/12

Каким должен быть результат моего сценария: 2012-01-22

Что я получу онлайн: 2022/12 -


Данные, которые я получаю: эфир 8/29/11

Каким должен быть результат моего сценария: 2011-08-29

Что я получу онлайн: 2029/11 -


Данные, которые я получаю: Airs 2/12/12

Каким должен быть результат моего сценария: 2012-02-12

Что я получу онлайн: 2012/12 -


Вот мой PHP-скрипт:

if(strstr($serie['airdate'], 'Airs')) {
            $date = substr($serie['airdate'], 5);
        }

        if(strstr($serie['airdate'], 'Aired')) {
            $date = substr($serie['airdate'], 6);
        }

        $mm = strstr($date, "/", true);
        $mmStrLen = strlen($mm);
        if((strlen($mm)) == "1") {
            $mm = "0".$mm;
        }

        $dd = substr($date, $mmStrLen+1);
        $dd = strstr($dd, "/", true);
        $ddStrLen = strlen($dd);
        if((strlen($dd)) == "1") {
            $dd = "0".$dd;
        }

        $yy = substr($date, $mmStrLen+1+$ddStrLen+1);
        if((strlen($yy)) == "1") {
            $yy = "0".$yy;
        }

        $serie['date'] = "20".$yy."-".$mm."-".$dd;

$ serie ['airdate'] - это данные, которые я получаю, а $ serie ['date'] - это место, где следует сохранить измененное значение.

Версия PHP, которую я использую локально, - 5.3.8, а версия моего веб-хостера - 5.2.17. Но я думаю, что это не корень проблемы.

Ответы [ 3 ]

1 голос
/ 28 декабря 2011

Это очень много кода для обработки дат.Пробовали использовать функцию strtotime () ?Вы можете связать его с функцией date () , чтобы легко переформатировать даты в PHP.

1 голос
/ 28 декабря 2011

Не удается отформатировать комментарий как код, поэтому я должен написать его как ответ.

Пожалуйста, попробуйте это с обеих сторон

$x=explode(' ',$serie['airdate']);
if (sizeof($x)!=2) die("Error in step 1");
$x=explode('/',$x[1]);
if (sizeof($x)!=3) die("Error in step 2");
$serie['date']=sprintf("20%02d-%02d-%02d",$x[2],$x[0],$x[1]);
1 голос
/ 28 декабря 2011

Взгляните на необработанную строку даты, которую вы разделяете локально и на сервере. Я готов поспорить, что формат даты ОС локально отличается от формата на сервере, и ваш код разделения строк не предназначен для обработки другого формата, который использует сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...