NexxDigital - компьютеры и операционные системы

Целые числа не имеют приоритета перед вещественными, но им предначертано во многом «не цифровое» предназначение. Точное число с конкретным количеством цифр и/или в конкретном диапазоне значений имеет смысл для формирования правил CSS, может быть использовано в качестве ключа массива или уникального кода записи строки таблицы базы данных. Целое число может быть частью уникального кода, паролем или контрольной суммой при передаче данных. Целое число — это далеко не математика и численные методы, это часто элемент данного или его код.

Смысл функции intval()

Функция intval() PHP служит для преобразования «переменной в целое», имеет два параметра и двойной смысл.

Вторым параметром является основание требуемой системы счисления. По умолчанию используется десятичная система. Если не указывать второй параметр, то число, которое начинается с символа «0» считается восьмеричным, а с символов «0х» — шестнадцатеричным.

Второй параметр имеет значение, если первый параметр является строкой символов.

Последние два примера (очень большие значения) показывают, что результат носит нецелесообразный характер. По существу, здесь имеет значение разрядность машины (операционной системы). На практике преобразования таких чисел не имеют особенного смысла.

Логика функции intval PHP — преобразовать строку или число в целое для практического применения. Например, сформировать правило CSS, в котором применяются только целые числа. Преобразовать вещественное число в целое простым изъятием только целой части.

Применение функции intval()

Функция intval() в PHP не единственная для целей получения целого. Можно использовать round(), ceil() и floor(). Эти функции оперируют общепринятой логикой округления.

Функция intval() PHP лишена какой-либо логики и действует по принципу получить целое число. Если требуется, то по нужному основанию нужной системы счисления.

Приведенные примеры intval() PHP показывают, что основная область ее применения — логика алгоритма, а не логика вычислений.

PHP не требует (и не поддерживает) явного определения типа при объявлении переменной; тип переменной определяется согласно контексту, в котором она используется. То есть, если вы присвоите строковое значение переменной $var , $var станет строкой. Если вы затем присвоите $var целочисленное значение, она станет целым числом.

Примером автоматического преобразования типа является оператор сложения "+ ". Если любой из операндов является числом с плавающей точкой, то все операнды интерпретируются как числа с плавающей точкой, результатом будет также число с плавающей точкой. В противном случае операнды будут интерпретироваться как целые числа и результат также будет целочисленным. Обратите внимание, что это НЕ меняет типы самих операндов; меняется только то, как они вычисляются. Некоторые практические примеры:

$foo = "0" ; // $foo это строка (ASCII 48)
$foo += 2 ; // $foo теперь целое число (2)
$foo = $foo + 1.3 ; // $foo теперь число с плавающей точкой (3.3)
$foo = 5 + "10 Little Piggies" ; // $foo это целое число (15)
$foo = 5 + "10 Small Pigs" ; // $foo это целое число (15)
?>

Если вы хотите протестировать любой из примеров, приведенных в данном разделе, вы можете использовать функцию var_dump() .

Внимание: -1 считается TRUE , как и любое ненулевое (отрицательное или положительное) число!

Примеры преобразований:

var_dump ((bool) "" ); // bool(false)
var_dump ((bool) 1 ); // bool(true)
var_dump ((bool) - 2 ); // bool(true)
var_dump ((bool) "foo" ); // bool(true)
var_dump ((bool) 2.3e5 ); // bool(true)
var_dump ((bool) array(12 )); // bool(true)
var_dump ((bool) array()); // bool(false)
var_dump ((bool) "false" ); // bool(true)
?>

Преобразование из типа Boolean

FALSE преобразуется в 0 (ноль), а TRUE - в 1 (единицу).

Преобразование из типа Float

При преобразовании из числа с плавающей точкой в целое, число будет округлено в сторону нуля .

Если число с плавающей точкой превышает пределы целого (как правило, это +/- 2.15e+9 = 2^31), результат будет неопределенным, так как целое не имеет достаточной точности, чтобы вернуть верный результат. В этом случае не будет выведено ни предупреждения, ни даже замечания

Внимание! Никогда не приводите неизвестную дробь к целому, так как это может иногда дать неожиданные результаты, например:

echo (int) ((0.1 + 0.7 ) * 10 ); // выводит 7!
?>

Преобразование из типа String

Преобразования из других типов

Для других типов поведение преобразования в целое не определено. В настоящее время поведение такое же, как если бы значение сперва было . Однако не полагайтесь на это поведение, так как он может измениться без предупреждения.

Булево (boolean ) значение TRUE преобразуется в строку "1" , а значение FALSE представляется как "" (пустая строка). Этим способом вы можете преобразовывать значения в обе стороны - из булева типа в строковый и наоборот.

Целое (integer ) или число с плавающей точкой (float ) преобразуется в строку, представленную числом, состоящим из его цифр (включая показатель степени для чисел с плавающей точкой).

Массивы всегда преобразуются в строку "Array" , так что вы не можете отобразить содержимое массива (array ), используя echo() или print() , чтобы узнать, что он содержит. Чтобы просмотреть один элемент, вам нужно сделать что-то вроде echo $arr["foo"] . Смотрите ниже советы о том, как отобразить/просмотреть все содержимое.

Объекты всегда преобразуются в строку "Object" . Если вы хотите вывести значение переменной-члена объекта (object ) с целью отладки, прочтите следующие абзацы. Если вы хотите получить имя класса требуемого объекта, используйте get_class() .

Ресурсы всегда преобразуются в строки со структурой "Resource id #1" , где 1 - это уникальный номер ресурса (resource ), присвоенный ему PHP во время выполнения. Если вы хотите получить тип ресурса, используйте .

NULL всегда преобразуется в пустую строку.

Вывод массивов, объектов или ресурсов не предоставляет вам никакой полезной информации о самих значениях. Более подходящий способ вывода значений для отладки - использовать функции print_r() и var_dump() .

Вы также можете преобразовать значения PHP в строки для постоянного хранения. Этот метод называется сериализацией и может быть выполнен при помощи функции serialize() . Кроме того, если в вашей установке PHP есть поддержка WDDX, вы можете сериализовать значения PHP в структуры XML.

Преобразование в тип Array (массивы)

Для любого из типов: integer , float , string , boolean и resource , если вы преобразуете значение в массив, вы получите массив с одним элементом (с индексом 0), являющимся скалярным значением, с которого вы начали.

Если вы преобразуете в массив объект (object ), вы получите в качестве элементов массива свойства (переменные-члены) этого объекта. Ключами будут имена переменных-членов.

Если вы преобразуете в массив значение NULL , вы получите пустой массив.

Преобразование в тип Object (объекты)

Если объект преобразуется в объект, он не изменяется. Если же в объект преобразуется значение любого иного типа, создается новый экземпляр встроенного класса stdClass . Если значение было пустым, новый экземпляр также будет пустым. При любом другом значении оно будет содержатся в переменной-члене scalar:

$obj = (object) "ciao" ;
echo $obj -> scalar ; // выведет "ciao"
?>

У меня есть приложение, которое касается клиентов со всего мира, и, естественно, я хочу, чтобы все, что попадало в мои базы данных, было кодировано в кодировке UTF-8.

Основная проблема для меня в том, что я не знаю, какая кодировка источника какой-либо строки будет - она ​​может быть из текстового поля (использование

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

Мне нужна функция или класс, который гарантирует, что материал, поступающий в мою базу данных, является, насколько это возможно, кодировкой UTF-8. Я пробовал iconv(mb_detect_encoding($text), "UTF-8", $text); но у этого есть проблемы (если вход "fiancée", он возвращает "fianc"). Я пробовал много вещей =/

Для загрузки файлов мне нравится идея попросить конечного пользователя указать кодировку, которую они используют, и показать им предварительный просмотр того, как будет выглядеть вывод, но это не помогает против неприятных хакеров (на самом деле это может сделать их жизнь немного легче).

Я прочитал другие SO-вопросы по этому вопросу, но они, похоже, имеют тонкие различия, такие как "Мне нужно разобрать RSS-каналы" или "Я удаляю данные с веб-сайтов" (или, действительно, "Вы не можете").

Но должно быть что-то, что, по крайней мере, имеет хорошую попытку!

9 ответов

То, о чем вы просите, чрезвычайно сложно. Если возможно, то лучше всего задать пользователю кодировку. Предотвращение атаки не должно быть намного проще или сложнее.

Однако вы можете попробовать:

Iconv(mb_detect_encoding($text, mb_detect_order(), true), "UTF-8", $text);

Установка строгого значения может помочь вам получить лучший результат.

В родине России у нас есть 4 популярных кодировки, поэтому ваш вопрос здесь очень востребован.

Только кодами символов char вы не можете обнаружить кодировку, потому что страницы кода пересекаются. Некоторые кодовые страницы на разных языках имеют даже полное пересечение. Итак, нам нужен другой подход .

Единственный способ работы с неизвестными кодировками - работать с вероятностями. Итак, мы не хотим отвечать на вопрос "что такое кодирование этого текста?", Мы пытаемся понять ", что, скорее всего, кодирование этого текста? ".

Один парень из популярного российского технологического блога придумал такой подход:

Создайте диапазон вероятности кодов char в каждой кодировке, которую вы хотите поддерживать. Вы можете построить его, используя некоторые большие тексты на вашем языке (например, какую-то фикцию, используйте Шекспир для английского и Толстого для русского, lol). Вы получите что-то вроде этого:

Encoding_1: 190 => 0.095249209893009, 222 => 0.095249209893009, ... encoding_2: 239 => 0.095249209893009, 207 => 0.095249209893009, ... encoding_N: charcode => probabilty

Далее. Вы берете текст в неизвестной кодировке и для каждой кодировки в вашем "вероятностном словаре" вы ищете частоту каждого символа в тексте с неизвестным кодированием. Суммарная вероятность символов. Кодирование с большим рейтингом, вероятно, является победителем. Лучшие результаты для больших текстов.

Если вам интересно , я могу с радостью помочь вам в решении этой задачи. Мы можем значительно повысить точность, создав список вероятностей с двумя символами.

Btw. mb_detect_encoding certanly не работает. Да, вообще. Пожалуйста, посмотрите исходный код mb_detect_encoding в "ext/mbstring/libmbfl/mbfl/mbfl_ident.c".

Вероятно, вы пробовали это, но почему бы просто не использовать функцию mb_convert_encoding? Он попытается автоматически определить char набор предоставленного текста или вы можете передать ему список.

Кроме того, я попытался запустить:

$text = "fiancée"; echo mb_convert_encoding($text, "UTF-8"); echo "

"; echo iconv(mb_detect_encoding($text), "UTF-8", $text);

и результаты одинаковы для обоих. Как вы видите, что ваш текст усечен до "fianc"? это в БД или в браузере?

Невозможно идентифицировать кодировку строки, которая является полностью точной. Есть способы попытаться угадать кодировку. Один из этих способов и, вероятно,/в настоящее время лучший в PHP, это mb_detect_encoding(). Это сканирует вашу строку и ищет вхождения вещей, уникальных для определенных кодировок. В зависимости от вашей строки не может быть таких различимых случаев.

Возьмите кодировку ISO-8859-1 и ISO-8859-15 (http://en.wikipedia.org/wiki/ISO/IEC_8859-15#Changes_from_ISO-8859-1)

Есть только несколько разных персонажей, и чтобы они ухудшались, они представлялись одними и теми же байтами. Невозможно обнаружить, получив строку, не зная ее кодировки, должен ли байт 0xA4 обозначать ¤ или € в вашей строке, поэтому нет способа узнать его точную кодировку.

(Примечание: вы могли бы добавить человеческий фактор или еще более совершенный метод сканирования (например, что предлагает Oroboros102), чтобы попытаться выяснить, основываясь на окружающем контексте, если персонаж должен быть ¤ или €, хотя это кажется как мост слишком далеко)

Существуют более различимые различия между, например, UTF-8 и ISO-8859-1, поэтому по-прежнему стоит попытаться понять это, когда вы не уверены, хотя вы можете и не должны полагаться на то, что это правильно.

Существуют и другие способы обеспечения правильной кодировки. Что касается форм, попробуйте максимально усилить UTF-8 (проверьте снеговика, чтобы убедиться, что вы будете представлять UTF-8 в каждом браузере: http://intertwingly.net/blog/2010/07/29/Rails-and-Snowmen) Это делается, по крайней мере, вы можете быть уверены, что каждый текст, представленный через ваши формы, - utf_8. В отношении загруженных файлов попробуйте запустить команду unix "file -i" на ней, например. exec() (если возможно, на вашем сервере), чтобы помочь обнаружению (используя спецификацию документа). Что касается скребущих данных, вы можете прочитать заголовки HTTP, которые обычно определяют кодировку. При анализе XML файлов см., Если метаданные XML содержат определение набора символов.

Вместо того, чтобы пытаться автоматически угадать кодировку, вы должны сначала попытаться обеспечить определенную кодировку самостоятельно, если это возможно, или попытаться получить определение из источника, из которого вы его получаете (если применимо), прежде чем прибегать к обнаружению.

Основная проблема для меня в том, что я не знаю, какая кодировка источника какой-либо строки будет - она ​​может быть из текстового поля (использование полезно только в том случае, если пользователь действительно отправил форму), или это может быть из загруженного текстового файла, поэтому я действительно не могу контролировать вход.

Я не думаю, что это проблема. Приложение знает источник ввода. Если это из формы, используйте кодировку UTF-8 в вашем случае. Это работает. Просто убедитесь, что предоставленные данные правильно закодированы (проверка). Имейте в виду, что не все базы данных поддерживают UTF-8 в полном объеме.

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

Ваша идея хорошая, что пользователь может сказать кодировку, если он/она может все равно сказать после загрузки файла, так как он является двоичным.

Поэтому я должен признать, что я не вижу конкретной проблемы, которую вы поднимаете с вашим вопросом. Но, возможно, вы можете добавить несколько подробностей о вашей проблеме.

Грим, есть действительно хорошие ответы и попытки ответить на ваш вопрос здесь. Я хотел бы поблагодарить всех за их ответы. Они великолепны. Я не являюсь мастером кодирования, но я понимаю ваше желание иметь чистый стек UTF-8 в вашей базе данных. Я использую MySQL utf8mb4 для таблиц, полей и подключений.

Моя ситуация сводилась к "Я просто хочу, чтобы мои дезинфицирующие средства, валидаторы, бизнес-логика и подготовленные заявления обрабатывали UTF-8, когда данные поступают из форм HTML или ссылок на регистрацию по электронной почте". Итак, по-моему, я начал с этой идеи:

  • Попытка обнаружения кодировки: $encodings = ["UTF-8", "ISO-8859-1", "ASCII"];
  • Если кодировка не может быть обнаружена, throw new RuntimeException
  • Если ввод UTF-8 , продолжайте.
  • Иначе, если это ISO-8859-1 или ASCII

    а. Попытка преобразования в UTF-8 (ожидание, не завершено)

    б. Определить кодировку преобразованного значения

    с. Если сообщенное кодированное и преобразованное значение равно UTF-8 , продолжайте.

    д. Else, throw new RuntimeException

Из моего абстрактного класса Sanitizer

Private function isUTF8($encoding, $value) { return (($encoding === "UTF-8") && (utf8_encode(utf8_decode($value)) === $value)); } private function utf8tify(&$value) { $encodings = ["UTF-8", "ISO-8859-1", "ASCII"]; mb_internal_encoding("UTF-8"); mb_substitute_character(0xfffd); //REPLACEMENT CHARACTER mb_detect_order($encodings); $stringEncoding = mb_detect_encoding($value, $encodings, true); if (!$stringEncoding) { $value = null; throw new \RuntimeException("Unable to identify character encoding in sanitizer."); } if ($this->isUTF8($stringEncoding, $value)) { return; } else { $value = mb_convert_encoding($value, "UTF-8", $stringEncoding); $stringEncoding = mb_detect_encoding($value, $encodings, true); if ($this->isUTF8($stringEncoding, $value)) { return; } else { $value = null; throw new \RuntimeException("Unable to convert character encoding from ISO-8859-1, or ASCII, to UTF-8 in sanitizer."); } } return; }

Можно было бы аргументировать, что я должен отделить проблемы кодирования от моего абстрактного класса Sanitizer и просто вставить объект Encoder в конкретный дочерний экземпляр Sanitizer . Однако основная проблема с моим подходом заключается в том, что я без каких-либо знаний отвергаю типы кодирования, которые мне не нужны (и я полагаюсь на функции PHP mb_ *). Без дальнейшего изучения я не могу знать, причиняет ли боль некоторым людям или нет (или, если я теряю важную информацию). Поэтому мне нужно больше узнать. Я нашел эту статью.

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

Для удобства работы с датами каждый язык программирования имеет свои специальные типы данных для хранения значения даты и времени. Чаще всего это числовое значение, либо целое, либо с плавающей точкой.

В PHP работа с датой чаще всего сталкивается с UNIX TIMESTAMP. Здесь время хранится целым числом. Исчисление времени начинается с 1 января 1970 года. Поэтому, например, дата и время 11.12.2014 19:40:00, будет представлено числом 1418316000. Эта цифра показывает, сколько секунд прошло с нулевой даты 1 января 1970 года, названой Эпохой Unix.

Пример php-страницы, предоставляющий возможности преобразования данных представлен на сайте в разделе программ программой "Преобразование формата даты и времени" . Здесь можно сформировать нужную дату в формат UNIX TIMESTAMP, а так же привести этот формат в стандартный, понятный человеку вид.

Получение текущего времени и даты в PHP

Для получения текущего времени сервера используется функция

int time(void)

которая как раз вернет значение в формате unix timestamp.

echo time(); // вывод текущего времени в формате unix timestamp

На первый взгляд не очень удобный формат для человека, но, как известно, чем проще представление данных, тем быстрее выполняется обработка этих значений компьютером. Кроме того, хранение числа в базе данных намного экономичнее, чем какой-либо специальный формат. Так же, PHP работает со временем одинаково и на Unix и на Windows платформе, что обеспечивает возможность использовать код на любой из этих платформ.

Преобразование формата даты и времени в PHP

Простейший механизм, позволяющий преобразовать числовое значение даты на более понятные значения, предоставляется функцией:

array getdate()

Она возвращает ассоциативный массив, содержащий информацию о дате. Если параметр timestamp не указан, будут возвращены сведения о текущем времени. Этот массив содержит следующие значения:

Полученный массив, позволяет вывести значения нужном виде:

$date = 1418372345;
$date_mas = getdate($date);
echo $date_mas["mday" ] . " . " . $date_mas["mon" ] . " . " . $date_mas["year" ]; // 12.12.2014


Так же для преобразования формата даты и времени можно воспользоваться функцией:

string date(string $template [, int $unix_timestamp])

Она предназначена для получения текущей даты unix timestamp в нужном формате. Строковый параметр $template определяет формат вывода. Параметром $unix_timestamp можно задать, с каким значением времени производится работа. Он необязательный, поэтому, если его не указать, будет использоваться текущая дата и время.

Формат задается следующими значениями:

a "до" и "после" полудня: "am" или "pm"
A "до" и "после" полудня заглавными буквами: "AM" или "PM"
d день месяца 2 цифрами (если меньше 10, на первом месте ноль) (от 01 до 31)
D день недели 3 буквами. Например, "Mon" (понедельник)
j день месяца, 1-2 цифры без начальных нулей (от 1 до 31)
F название месяца. Например, "January"
h час, 12-часовой формат (от 01 до 12)
H час, 24-часовой формат (от 00 до 23)
g час, 12-часовой формат без нулей (от 1 до 12)
G час, 24-часовой формат без нулей (от 0 до 23)
i минуты (от 00 до 59)
I (заглавная i) 1, если действует переход на летнее время, иначе 0
L 1, если год високосный, или 0 если не високосный
B время в формате Интернет-времени (альтернативной системы отсчета времени суток) (от 000 до 999)
T временная зона компьютера. Например, MDT
l (строчная L) день недели. Например, "Monday"
m месяц, две цифры с нулями (от 01 до 12)
n месяц, одна-две цифры без нулей (от 1 до 12)
M сокращенное наименование месяца. Например, "Jan"
t число дней в указанном месяце (от 28 до 31)
s секунды (от 0 до 59)
S англоязычный порядковый суффикс числа из двух букв ("st", "nd", "rd" или "th")
U целое число секунд, прошедших с момента начала эпохи UNIX
y год, цифровой, 2 цифры (14)
Y год, цифровой, 4 цифры (2014)
z порядковое число дня в году (от 0 до 365)
Z смешение временной зоны в секундах (от -43200 до 43200)
N порядковый номер дня недели от 1 (понедельник) до 7 (воскресенье) в соответствии со стандартом ISO-8601, (добавлен в версии PHP 5.1.0)
w порядковый номер дня недели от 0 (воскресенье) до 6 (суббота)
W порядковый номер недели года в соответствии со стандартом ISO-8601; недели начинаются с понедельника (добавлено в версии PHP 4.1.0)
o номер года в соответствии со стандартом ISO-8601. Имеет то же значение, что и Y, кроме случая, когда номер недели ISO (W) принадлежит предыдущему или следующему году; тогда будет использован год этой недели. (добавлен в версии PHP 5.1.0)
e код шкалы временной зоны. Например: UTC, GMT, Atlantic/Azores (добавлен в версии PHP 5.1.0)
O разница с временем по Гринвичу, в часах. Например: +0200
P разница с временем по Гринвичу с двоеточием между часами и минутами. Например: +02:00 (добавлено в версии PHP 5.1.3)
c дата в формате стандарта ISO 8601. Например, 2014-12-12T15:19:21+00:00 (добавлено в PHP 5)
r дата в формате » RFC 2822. Например: Thu, 21 Dec 2000 16:01:07 +0200
U количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970 00:00:00 GMT)

Как видно из списка, с помощью этой функции можно получить очень много полезных данных о дате. Например:

$date = 1418372345; // исходное дата и время 12.12.2014 11:19:05

echo date("d.m.Y" , $date); // 12.12.2014 (дата)
echo date("H:i:s" , $date); // 11:19:05 (время)
echo date("H:i" , $date); // 11:19 (время)
echo date("t" , $date); // 31 (число дней в месяце)
echo date("z" , $date); // 345 (порядковый номер дня в году)
echo date("l dS \of F Y h:i:s A" , $date); // Friday 12th of December 2014 11:19:05 AM

Другие символы, входящие в шаблон, будут выведены в строке как есть. Если же потребуется ввести символ, который используется в функции как код формата, перед ними вставляется символ "\". Для значения "\n" (символ перехода на новую строку), следует указать "\\n". Таким образом, можно делать вывод целого сообщения, содержащего сведения о дате и времени:

echo date("Сегодня z-й день Y-го года" , $date); // Сегодня 345-й день 2014-го года

Преобразование даты и времени в формат timestamp

Для обратного преобразования даты из стандартного формата в числовое значение timestamp применяется функция:

int mktime(]]]]]])

Функция mktime() возвращает значение времени Unix, соответствующую дате и времени, заданным аргументами. Например:

$my_date = mktime (10, 30, 0, 12, 12, 2014);

Следует внимательно относится к порядку аргументов функции: часы, минуты, секунды, месяц, день, год.

Кроме простого формирования значения даты в timestamp, функцию mktime() можно использовать для арифметически вычисления с датами. Для этого просто можно ввести необходимые аргументы. Например, если указать 14 месяц, то в итоговом значении, месяц будет 2-й, а значение года увеличится на единицу:

$my_day = 12;
$my_month = 12;
$my_year = 2014;

$new_date = mktime(0, 0, 0, $my_month + 5, $my_day, $my_year);

echo date("d.m.Y" , $new_date); // 12.05.2015 (дата)

Аналогично можно поступать и с другими параметрами.

Проверка корректности даты в PHP

При работе с датами, особенно при формировании даты предложенной выше функцией mktime() необходимо учитывать корректность вводимой даты. Для этого в PHP используется функция:

bool checkdate(int month, int day, int year)

Возвращает true если дата, заданная аргументами, является правильной; иначе возвращает false. Дата считается правильной, если:

Год в диапазоне от 1 до 32767;

Месяц в диапазоне от 1 до 12;

День для заданного месяца с учетом високосного года указаны правильно.

Пример проверки даты:

$my_day = 32;
$my_month = 12;
$my_year = 2014;

if (!checkdate($my_month, $my_day, $my_year))
echo "Ошибка: дата указана некорректно" ;



Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
ПОДЕЛИТЬСЯ:
NexxDigital - компьютеры и операционные системы