Когда я пытаюсь получить количество символов в моей строке, которая равна «£», с помощью strlen (), почему она возвращает 2?

Я хочу создавать входы в html5 с максимальной длиной.

У меня есть текст, и мне нужно преобразовать его в форму с входными данными. Максимальная длина входов определяется в тексте. Но с символами £ strlen возвращает 2.

Кто-нибудь знает, почему, пожалуйста?

$strTEST = "£";
$i = strlen($strTEST);
var_dump($i); // display 2

Google: многобайтовые символы

John Conde 11.04.2018 14:21
1
1
45
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

От: http://php.net/strlen

Note:

strlen() returns the number of bytes rather than the number of characters in a string.

Если вы перейдете на http://www.utf8-chartable.de/ и выполните поиск £:

Unicode code point     character    hex      name

U+00A3                 £            c2 a3    POUND SIGN

Вы можете видеть, что шестнадцатеричным представлениям требуется два байта для хранения этого конкретного символа.

Альтернативным решением для обхода этой проблемы было бы использование mb_strlen

От: http://php.net/mb_strlen

Returns the number of characters in string str having character encoding encoding. A multi-byte character is counted as 1.

Вы также можете использовать mb_strlen (), если хотите подсчитать символы UTF-8

Lara Croft 11.04.2018 14:24

Другие вопросы по теме