Устанавливает мягкий режим анализатора

# IntlDateFormatter::setLenient

# datefmt_set_lenient

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL intl >= 1.0.0)

IntlDateFormatter::setLenient -- datefmt_set_lenient — Устанавливает мягкий режим анализатора

### Описание

Объектно-ориентированный стиль

public function IntlDateFormatter::setLenient(bool `$lenient`): void

Процедурный стиль

function datefmt_set_lenient(IntlDateFormatter `$formatter`, bool `$lenient`): void

Определяет, является ли режим анализатора строгим или мягким при интерпретации входных данных, которые в точности не соответствуют шаблону. Включение мягкого синтаксического анализа позволяет синтаксическому анализатору принимать ошибочные шаблоны даты или времени, анализируя как можно больше для получения значения. Лишний пробел, нераспознанные токены или недопустимые значения ("February 30th") не принимаются.

### Список параметров

`formatter`

  Ресурс средства форматирования.

`lenient`

  Устанавливает, является ли анализатор мягким или нет, по умолчанию `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

### Смотрите также

- datefmt_is_lenient() - Получает снисходительность, используемую для IntlDateFormatter
- datefmt_create() - Создаёт средство форматирования даты

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open