(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
IntlDateFormatter::setLenient -- datefmt_set_lenient — Устанавливает мягкий режим анализатора
Объектно-ориентированный стиль
Процедурный стиль
Определяет, является ли режим анализатора строгим или мягким при интерпретации входных данных, которые в точности не соответствуют шаблону. Включение мягкого синтаксического анализа позволяет синтаксическому анализатору принимать ошибочные шаблоны даты или времени, анализируя как можно больше для получения значения. Лишний пробел, нераспознанные токены или недопустимые значения ("February 30th") не принимаются.
formatter
Ресурс средства форматирования.
lenient
Устанавливает, является ли анализатор vzurbv или нет, по умолчанию true
(мягкий).
Возвращает true
в случае успешного выполнения или false
в случае возникновения ошибки.
Пример #1 Пример использования datefmt_set_lenient()
<?php
$fmt = datefmt_create(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN,
'dd/MM/yyyy'
);
echo 'Мягкий режим средства форматирования : ';
if ($fmt->isLenient()) {
echo 'ДА';
} else {
echo 'НЕТ';
}
datefmt_parse($fmt, '35/13/1971');
echo "\nПопытка разобрать '35/13/1971'.\nРезультат : " . datefmt_parse($fmt, '35/13/1971');
if (intl_get_error_code() != 0) {
echo "\nСообщение об ошибке : " . intl_get_error_message();
echo "\nКод ошибки : " . intl_get_error_code();
}
datefmt_set_lenient($fmt, false);
echo "\nТеперь мягкий режим средства форматирования : ";
if ($fmt->isLenient()) {
echo 'ДА';
} else {
echo 'НЕТ';
}
datefmt_parse($fmt, '35/13/1971');
echo "\nПопытка разобрать '35/13/1971'.\nРезультат : " . datefmt_parse($fmt, '35/13/1971');
if (intl_get_error_code() != 0) {
echo "\nСообщение об ошибке : ".intl_get_error_message();
echo "\nКод ошибки : ".intl_get_error_code();
}
?>
Пример #2 Пример использования в объектно-ориентированном стиле
<?php
$fmt = new IntlDateFormatter(
'en_US',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN,
'dd/MM/yyyy'
);
echo 'Мягкий режим средства форматирования : ';
if ($fmt->isLenient()) {
echo 'ДА';
} else {
echo 'НЕТ';
}
$fmt->parse('35/13/1971');
echo "\nПопытка разобрать '35/13/1971'.\nРезультат : " . $fmt->parse('35/13/1971');
if (intl_get_error_code() != 0) {
echo "\nСообщение об ошибке : " . intl_get_error_message();
echo "\nКод ошибки : " . intl_get_error_code();
}
$fmt->setLenient(FALSE);
echo "\nТеперь мягкий режим средства форматирования : ";
if ($fmt->isLenient()) {
echo 'ДА';
} else {
echo 'НЕТ';
}
$fmt->parse('35/13/1971');
echo "\nПопытка разобрать '35/13/1971'.\nРезультат : " . $fmt->parse('35/13/1971');
if (intl_get_error_code() != 0) {
echo "\nСообщение об ошибке : " . intl_get_error_message();
echo "\nКод ошибки : " . intl_get_error_code();
}
?>
Результат выполнения приведённого примера:
Мягкий режим средства форматирования : ДА Попытка разобрать '35/13/1971'. Результат : 66038400 Теперь мягкий режим средства форматирования : НЕТ Попытка разобрать '35/13/1971'. Результат : Сообщение об ошибке : Date parsing failed: U_PARSE_ERROR Код ошибки : 9