Функция php mktime, создающая странные символы

Я пытаюсь адаптировать сценарий календаря Дэвида Уолша. В скрипте Дэвида, показывающем месячный календарь, в течение первой недели он показывает пробелы перед началом месяца, но комментатор сказал, что вы можете использовать следующий код для отображения дат из предыдущего месяца, т.е. 28 20 30 в зависимости от того, когда выпадает первый день месяца .

Я не буду повторять весь код из скрипта, на который дана ссылка, но главное, что в коде замены отображается символ, который я никогда раньше не видел..., «30». (Я скопировал эти символы из источника. Это квадраты с надписью FF над PD.). Вот код. Обратите внимание, что $x, $running_day и $daysInThisWeek — это просто числа. $calendar отображается в конце.

//following prints out empty table cells

for($x = 0; $x < $running_day; $x++):
        $calendar.= '<td class="calendar-day-np">&nbsp;</td>';
        $days_in_this_week++;
    endfor;
echo $calendar;

//Но последующее эхо выводит странные символы:

$daysInLastMonth = date(‘t’,mktime(0,0,0,$month-1,1,$year));

Затем, когда вы выполняете цикл, как указано выше, вы получаете целую кучу странных символов.

for($x = 0; $x < $running_day; $x++): //this line is same as above
$calendar.= ' . ( ( $daysInLastMonth – ( $runningDay – 1 ) ) + $x ). ';
$daysInThisWeek++;
endfor;
echo $calendar;

Кто-нибудь знает, что может происходить, что означают странные символы и как заставить это отображаться правильно.

Спасибо за любые предложения!


person user1904273    schedule 14.05.2013    source источник


Ответы (2)


Включите все ошибки, и вы увидите, что у вас неправильные кавычки. Ошибки будут такими

Примечание: использование неопределенной константы «t» - предполагается «t»

Эта линия

$daysInLastMonth = date(‘t’,mktime(0,0,0,$month-1,1,$year));

должно быть

$daysInLastMonth = date('t',mktime(0,0,0,$month-1,1,$year));
person sectus    schedule 14.05.2013
comment
Вот это да. Спасибо. Не знаю, сколько времени мне понадобилось, чтобы это понять. Знаки препинания поменяли и всё. Спасибо. Отметит правильно, когда позволит. - person user1904273; 14.05.2013

Есть ошибка с:

$daysInLastMonth = date(‘t’,mktime(0,0,0,$month-1,1,$year));

Так должно быть:

$daysInLastMonth = date('t',mktime(0,0,0,$month-1,1,$year));

Чтобы заметить такую ​​ошибку, вы должны включить ошибки:

error_reporting(E_ALL);

Подробнее об ошибках PHP см.: http://php.net/manual/en/function.error-reporting.php

Что касается символов, похоже, проблема с кодировкой:

Эти ссылки помогут вам:

http://www.php.net/manual/en/ini.core.php#ini.default-charset

UTF-8 полностью

person chaim    schedule 14.05.2013