Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

mb_strlen() is it enough?

When counting the length of an UTF-8 string in PHP I use mb_strlen().

For example:

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

As the text fields can accept any language (multilanguage), I want to make sure that PHP will count mutltilanguage UTF-8 characters correctly.

Is this sufficient or do I need to use other methods? I am concerned PHP may get it wrong for some reason, or maybe I am just being skeptical, but I don't want people bypassing important validation because PHP is getting it wrong.

like image 259
PHPLOVER Avatar asked Sep 04 '10 04:09

PHPLOVER


2 Answers

Correct

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

make sure header is correct

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

you can also check alternative for some reason

strlen(utf8_decode($string))

UTF-8 to Code Point Array Converter in PHP

like image 56
Pramendra Gupta Avatar answered Nov 20 '22 16:11

Pramendra Gupta


In addition to JapanPro's answer:
Your HTML can have :

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

instead of an implicit header declaration:

HTTP-header (Content-Type: text/html; charset=UTF-8)
like image 1
Nasser Al-Wohaibi Avatar answered Nov 20 '22 17:11

Nasser Al-Wohaibi