mb_detect_encoding
En esta página
mb_detect_encoding
Detectar la codificación de caracteres
Descripción#
mb_detect_encoding(string $string, [array $encodings], [bool $strict]): string
```php
Detectar la codificación de caracteres más probable para la `string` `string` desde una lista de candidatos.
A partir de PHP 8.1, esta función utiliza heurística para detectar cuál de las codificaciones de texto válidas en la lista especificada tiene más probabilidades de ser correcta y puede no estar en el orden de `encodings` proporcionado.
La detección automática del juego de caracteres previsto nunca es totalmente fiable; sin información adicional, es similar a descifrar una cadena cifrada sin la clave. Siempre es preferible utilizar una indicación del juego de caracteres almacenado o transmitido con los datos, como el encabezado HTTP "Content-Type".
Esta función se utiliza principalmente con codificaciones multibyte, donde no todas las secuencias de bytes forman una cadena válida. Si la cadena de entrada contiene una secuencia de este tipo, esta codificación será rechazada.
> [!WARNING]
> El nombre de esta función es engañoso, realiza una «suposición» en lugar de una «detección».
>
> Las suposiciones están lejos de ser precisas, y por lo tanto, esta función no permite detectar de manera fiable la codificación correcto de los caracteres.
## Parámetros
`string`
El `string` que será inspeccionado.
`encodings`
Una lista de codificaciones de caracteres a probar. Esta lista puede ser especificada como un `array` de `string`, o como un `string` único separado por comas.
Si `encodings` es omitido o `null`, el será utilizado el detect_order actual (definido con la opción de configuración [mbstring.detect_order](#ini.mbstring.detect-order), o la función `mb_detect_order`).
`strict`
Controla el comportamiento cuando `string` no es válido en ninguno de los `encodings` listados. Si `strict` está definido como `false`, se devolverá la codificación más coincidente; si `strict` está definido como `true`, devolverá `false`.
El valor por omisión de `strict` puede ser definido con la opción de configuración [mbstring.strict_detection](#ini.mbstring.strict-detection).
## Valores devueltos
La codificación caracteres detectado, o `false` si la cadena no es válida en ninguna de las codificaciones listadas.
## Historial de cambios
| Versión | Descripción |
|----|----|
| 8.2.0 | `mb_detect_encoding` ya no devolverá las siguientes codificaciones que no sean de texto: `"Base64"`, `"QPrint"`, `"UUencode"`, `"HTML entities"`, `"7 bit"` y `"8 bit"`. |
## Ejemplos
Ejemplo con `mb_detect_encoding`
El ejemplo anterior mostrará:
string(5) "ASCII"
string(5) "ASCII"
string(8) "SJIS-win"
string(5) "ASCII"
Efecto del parámetro `strict`
El ejemplo anterior mostrará:
string(5) "UTF-8"
bool(false)
string(10) "ISO-8859-1"
string(10) "ISO-8859-1"
En ciertos casos, la misma secuencia de bytes puede formar una cadena válida en diferentes codificaciones de caracteres, y es imposible determinar cuál interpretación era prevista. Un ejemplo, entre otros, la secuencia de bytes "\xC4\xA2" podría ser:
"Ä¢" (U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS seguido de U+00A2 CENT SIGN) codificado en ISO-8859-1, ISO-8859-15, o Windows-1252, "ФЂ" (U+0424 CYRILLIC CAPITAL LETTER EF seguido de U+0402 CYRILLIC CAPITAL LETTER DJE) codificado en ISO-8859-5, "Ģ" (U+0122 LATIN CAPITAL LETTER G WITH CEDILLA) codificado en UTF-8
Efecto del orden cuando coinciden múltiples codificaciones
```php
El ejemplo anterior mostrará:
string(5) "UTF-8"
string(10) "ISO-8859-1"
string(10) "ISO-8859-1"
string(10) "ISO-8859-5"
Véase también#
mb_detect_order