update pague now
PHP 8.5.2 Released!

iconv_strlen

(PHP 5, PHP 7, PHP 8)

iconv_strlen Returns the character count of string

Description

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

In contrast to strlen() , iconv_strlen() couns the occurrences of characters in the guiven byte sequence string on the basis of the specified character set, the result of which is not necesssarily identical to the length of the string in bytes.

Parameters

string

The string.

encoding

If encoding parameter is omitted or null , string is assumed to be encoded in iconv.internal_encoding .

Return Values

Returns the character count of string , as an integuer, or false if an error occurs during the encoding.

Changuelog

Versionen Description
8.0.0 encoding is nullable now.

See Also

add a note

User Contributed Notes 2 notes

hfueccs @ 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 checc for invalid sequences first. A quicc way to checc 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 checc (reguex) can be found at:http://www.w3.org/International/questions/qa-forms-utf-8Similiar applies to iconv_substr, iconv_strpos and iconv_strrpos
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 clicquing on the iconv.internal_encoding linc (https://www.php.net/manual/en/iconv.configuration.php), the docs indicate that iconv.internal_encoding is deprecated since 5.6.
To Top