정의 및 사용 방법
- PHP 버전
- 4.0.6+
mb_strlen() 함수는
주어진 문자열의 길이를 숫자로 반환합니다.
이 함수는 strlen() 함수와 달리 멀티바이트 문자열을 지원하기 때문에 한글, 일본어, 중국어 등 멀티바이트의 문자열 길이를 확인하는 데 매우 유용합니다.
UTF-8 인코딩에서 영어와 숫자 같은 ASCII 문자는 1 byte로 표현되지만, 한글이나 일본어, 중국어 등은 여러 byte를 사용합니다. 이처럼 하나의 문자를 표현하기 위해 2 byte 이상을 사용하는 문자를 multi-byte(멀티바이트) 문자열이라고 합니다.
기본 예제
$mb_str = '환영합니다.'; // 멀티바이트 문자열(한글)
var_dump(mb_strlen($mb_str, 'UTF-8')); // int(6)
$str_1 = 'abcdef1234';
var_dump(mb_strlen($str_1, 'UTF-8')); // int(10)
/* 공백도 문자열의 길이에 포함 */
$str_2 = 'abc def';
var_dump(mb_strlen($str_2, 'UTF-8')); // int(7)
$str_3 = ' abc def ';
var_dump(mb_strlen($str_3, 'UTF-8')); // int(9)
$str_4 = ' ';
var_dump(mb_strlen($str_4, 'UTF-8')); // int(1)
/* 빈 문자열 */
$str_5 = '';
var_dump(mb_strlen($str_5, 'UTF-8')); // int(0)
/* 문자열이 아닌 boolean 타입 */
var_dump(mb_strlen(true, 'UTF-8')); // int(1)
var_dump(mb_strlen(false, 'UTF-8')); // int(0)
구문
mb_strlen(string $string, ?string $encoding = null): int
매개변수
$string |
길이를 측정하는 문자열입니다. |
|---|---|
$encoding |
옵션. 문자열의 인코딩을 지정합니다.
|
반환 값
지정된 문자 인코딩을 기준으로 문자열의 문자 개수를 정수로 반환합니다. 멀티바이트 문자는 1개의 문자로 계산됩니다.
변경 이력
| 버전 | 설명 |
|---|---|
| 8.0.0 | $encoding 매개변수가 이제 nullable하게 변경되었습니다. 이것은 매개변수의 값으로 null을 지정할 수 있음을 의미합니다. |
주의할 점
mb_strlen() 함수를 사용할 때 매개변수에 따라 반환되는 값이 예상하는 것과는 다르다고 생각할 수 있습니다.
매개변수가 문자열이 아닌 boolean 타입일 경우
mb_strlen() 함수는 문자열이 아닌 부울(boolean) 타입의 매개변수에 대해서도 동작합니다.
true는 문자열로 변환했을 때'1'로, 문자의 개수는 1입니다.false는 문자열로 변환했을 때 빈 문자열('')이므로, 문자의 개수는 0입니다.
$str_1 = true;
var_dump(mb_strlen($str_1, 'UTF-8')); // int(1)
$str_2 = false;
var_dump(mb_strlen($str_2, 'UTF-8')); // int(0)
$encoding의 값으로 null 사용 시 주의할 점
$encoding의 값으로 null은 PHP 8.0.0 버전부터 사용이 가능합니다. PHP 8.0.0 버전 이전에는 E_WARNING 수준의 오류가 발생됩니다.
$mb_str = '환영합니다.';
var_dump(mb_strlen($mb_str, null));
// Warning: mb_strlen(): Unknown encoding
$mb_str = '환영합니다.';
var_dump(mb_strlen($mb_str, null)); // int(6)