(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)
IntlDateFormatter::isLenient -- datefmt_is_lenient — Получает снисходительность, используемую для IntlDateFormatter
Объектно-ориентированный стиль
Процедурный стиль
Проверяет, является ли синтаксический анализатор строгим или снисходительным при интерпретации входных данных, которые не точно соответствуют шаблону.
formatter
Ресурс средства форматирования.
Возвращает true
, если парсер снисходителен или false
, если парсер строгий.
По умолчанию парсер снисходителен.
Пример #1 Пример использования datefmt_is_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 'Теперь снисходительность средства форматирования: ';
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 'Теперь снисходительность средства форматирования: ';
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'. Результат: -2147483 Теперь снисходительность средства форматирования: Нет Попытка выполнить синтаксический анализ '35/13/1971'. Результат: Ошибка: Date parsing failed: U_PARSE_ERROR Код ошибки: 9