Configura la flexibilidad del analizador

# IntlDateFormatter::setLenient

# datefmt_set_lenient

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

IntlDateFormatter::setLenient -- datefmt_set_lenient — Configura la flexibilidad del analizador

### Descripción

Estilo orientado a objetos

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

Estilo procedimental

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

Define si el analizador es estricto o flexible al interpretar strings que no coinciden exactamente con el patrón buscado. Activar la flexibilidad del analizador permite aceptar valores que podrían ser considerados erróneos por el analizador estricto. Los espacios, los caracteres desconocidos o las fechas inválidas no son aceptados.

### Parámetros

`formatter`

  El recurso de formateador IntlDateFormatter.

`lenient`

  Si el analizador es flexible o no, por defecto, vale `true` (flexible).

### Valores devueltos

Esta función retorna `true` en caso de éxito o `false` si ocurre un error.

### Ejemplos

Ejemplo #1 Ejemplo con datefmt_set_lenient()

    <?php
    $fmt = datefmt_create(
        'en_US',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN,
        'dd/MM/yyyy'
    );
    echo 'El formateador es flexible : ';
    if ($fmt->isLenient()) {
        echo 'Sí';
    } else {
        echo 'No';
    }
    datefmt_parse($fmt, '35/13/1971');
    echo "\nIntento de análisis de la fecha '35/13/1971'.\nEl resultado es : " . datefmt_parse($fmt, '35/13/1971');
    if (intl_get_error_code() != 0) {
        echo "\nError_msg es : " . intl_get_error_message();
        echo "\nError_code es : " . intl_get_error_code();
    }
    datefmt_set_lenient($fmt, false);
    echo "\nAhora, el formateador es estricto : ";
    if ($fmt->isLenient()) {
        echo 'Sí';
    } else {
        echo 'No';
    }
    datefmt_parse($fmt, '35/13/1971');
    echo "\nIntento de análisis de la fecha '35/13/1971'.\nEl resultado es : " . datefmt_parse($fmt, '35/13/1971');
    if (intl_get_error_code() != 0) {
        echo "\nError_msg es : ".intl_get_error_message();
        echo "\nError_code es : ".intl_get_error_code();
    }

    ?>

Ejemplo #2 Ejemplo orientado a objetos

    <?php
    $fmt = new IntlDateFormatter(
        'en_US',
        IntlDateFormatter::FULL,
        IntlDateFormatter::FULL,
        'America/Los_Angeles',
        IntlDateFormatter::GREGORIAN,
        'dd/MM/yyyy'
    );
    echo 'El formateador es flexible : ';
    if ($fmt->isLenient()) {
        echo 'Sí';
    } else {
        echo 'No';
    }
    $fmt->parse('35/13/1971');
    echo "\n Intento de análisis de la fecha '35/13/1971'.\nEl resultado es : " . $fmt->parse('35/13/1971');
    if (intl_get_error_code() != 0) {
        echo "\nError_msg es : " . intl_get_error_message();
        echo "\nError_code es : " . intl_get_error_code();
    }

    $fmt->setLenient(FALSE);
    echo "\nAhora, el formateador es estricto : ";
    if ($fmt->isLenient()) {
        echo 'Sí';
    } else {
        echo 'No';
    }
    $fmt->parse('35/13/1971');
    echo "\n Intento de análisis de la fecha '35/13/1971'.\nEl resultado es : " . $fmt->parse('35/13/1971');
    if (intl_get_error_code() != 0) {
        echo "\nError_msg es : " . intl_get_error_message();
        echo "\nError_code es : " . intl_get_error_code();
    }

    ?>

El ejemplo anterior mostrará:

    El formateador es flexible : No
    Intento de análisis de la fecha '35/13/1971'.
    El resultado es : 66038400
    Ahora, el formateador es estricto : Sí
    Intento de análisis de la fecha '35/13/1971'.
    El resultado es : Error_msg es : Date parsing failed: U_PARSE_ERROR Error_code es : 9

### Ver también

- datefmt_is_lenient() - Devuelve la severidad utilizada para IntlDateFormatter
- datefmt_create() - Crea un formateador de fecha

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