(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