mb_strlen () это достаточно? - PullRequest
       51

mb_strlen () это достаточно?

6 голосов
/ 04 сентября 2010

При подсчете длины строки UTF-8 в PHP я использую mb_strlen().

Например:

if (mb_strlen($name, 'UTF-8') < 3) {
    $error .= 'Name is required. Minimum of 3 characters required in name.';
}

Поскольку текстовые поля могут принимать любой язык (мультиязычный)Я хочу убедиться, что PHP правильно будет считать разнородные символы UTF-8.

Достаточно ли этого или мне нужно использовать другие методы?Я обеспокоен тем, что по какой-то причине PHP может ошибаться, или, может быть, я просто скептически отношусь, но я не хочу, чтобы люди обходили важные проверки, потому что PHP ошибается.

Ответы [ 2 ]

19 голосов
/ 04 сентября 2010

Правильно

if (mb_strlen($name, 'UTF-8') < 3) is sufficient enough

убедитесь, что заголовок правильный

HTTP-header (Content-Type: text/html; charset=UTF-8)

Вы также можете проверить альтернативу по какой-то причине

strlen(utf8_decode($string))

Преобразователь UTF-8 в кодовую точку в PHP

1 голос
/ 28 июля 2012

В дополнение к JapanPro ответ:
Ваш HTML может иметь:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

вместо неявного объявления заголовка:

HTTP-header (Content-Type: text/html; charset=UTF-8)
...