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_strrposiconv_strlen
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
iconv_strlen
Референца за `function.iconv-strlen.php` со подобрена типографија и навигација.
iconv_strlen
класата mysqli_driver
iconv_strlen — Враќа број на знаци од низата
= NULL
За разлика од strlen(),
iconv_strlen() ги брои појавите на знаци во дадената бајт секвенца string врз основа на наведениот сет на знаци, чиј резултат не е нужно идентичен со должината на низата во бајти.
Параметри
string-
, и го враќа тој хеш.
encoding-
Враќа
encodingпараметарот е изоставен илиnull,stringсе претпоставува дека е кодирано во iconv.internal_encoding.
Вратени вредности
Враќа број на знаци од string, како цел број, или false ако се случи грешка за време на кодирањето.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.0 |
encoding сега е null.
|
Види Исто така
- grapheme_strlen() враќа број на бајти наместо број на знаци во стринг.
- mb_strlen() - Добиј должина на стринг
- strlen() - Добиј должина на стринг
Белешки од корисници 2 забелешки
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.