iconv_strlen

(PHP 5)

iconv_strlenDizgenin karakter sayısı ile döner

Açıklama

int iconv_strlen ( string $dizge [, string $karküm = ini_set("iconv.internal_encoding") ] )

Taydaşı olan strlen() işlevinden farklı olarak bayt değil karakter sayar. Karakterler karküm ile belirlenen karakter kümesine göre değerlendirilirler.

Değiştirgeler

dizge

Karakter sayısı hesaplanacak dizge.

karküm

Eğer karküm belirtilmezse, dizgenin karakter kodlamasının iconv.internal_encoding yönergesinde belirtilen kodlama olduğu varsayılır.

Dönen Değerler

dizge dizgesinin karakter sayısını bir tamsayı olarak döndürür.

Ayrıca Bakınız

add a note add a note

User Contributed Notes 1 note

up
2
hfuecks @ nospam org
8 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 = "Itrntin\xe9liztin";

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
To Top