iconv_strlen

(PHP 5, PHP 7, PHP 8)

iconv_strlenDevuelve el número de caracteres de una cadena

Descripción

iconv_strlen(string $string, ?string $encoding = null): int|false

A diferencia de strlen(), el valor devuelto por iconv_strlen() es el número de caracteres que forman parte de la secuencia de bytes string, lo cual no siempre coincide con el tamaño en bytes de la cadena de caracteres.

Parámetros

string

La string.

encoding

Si encoding es omitido o null, string se asume que está codificada en iconv.internal_encoding.

Valores devueltos

Devuelve el número de caracteres de la cadena string, en forma de int, o false si ocurre un error durante la codificación.

Historial de cambios

Versión Descripción
8.0.0 encoding ahora es nullable.

Ver también

  • grapheme_strlen() - Obtener la longitud de un string en unidades de grafema
  • mb_strlen() - Obtiene la longitud de una cadena de caracteres
  • strlen() - Obtiene la longitud de un string

add a note

User Contributed Notes 2 notes

up
13
hfuecks @ nospam org
19 years ago
If iconv_strlen is passed a UTF-8 string containing badly formed sequences, it will return FALSE. This is in contrast to mb_strlen of the behaviour of utf8_decode, which strip out any bad sequences;

<?php
# UTF-8 string containing bad sequence: \xe9
$str = "I?t?rn?ti?n\xe9?liz?ti?n";

print
"mb_strlen: ".mb_strlen($str,'UTF-8')."\n";
print
"strlen/utf8_decode: ".strlen(utf8_decode($str))."\n";
print
"iconv_strlen: ".iconv_strlen($str,'UTF-8')."\n";
?>

Displays;

mb_strlen: 20
strlen/utf8_decode: 20
iconv_strlen:

(PHP 5.0.5)

As such it is being "stricter" than mb_strlen and it may mean you need to check for invalid sequences first. A quick way to check is to exploit the behaviour of the PCRE extension (see notes on pattern modifiers);

<?php
if (preg_match('/^.{1}/us',$str,$ar) != 1) {
die(
"string contains invalid UTF-8");
}
?>

A slower but stricter check (regex) can be found at: http://www.w3.org/International/questions/qa-forms-utf-8

Similiar applies to iconv_substr, iconv_strpos and iconv_strrpos
up
2
sheryl
5 years ago
Notice there is a disconnect:
>If charset`parameter is omitted, str is assumed to be encoded in iconv.internal_encoding.

But clicking on the iconv.internal_encoding link (https://www.php.net/manual/en/iconv.configuration.php), the docs indicate that iconv.internal_encoding is deprecated since 5.6.
To Top