PHP 에서 문자열변수(string) 에 한글이나 한자, 일본어 등 다국어가 포함되어 있으면, strlen 함수로 정확히 나오지 않습니다.

"한" 의 길이가 3 으로 나오는데, 1로 나오게 어떻게 하나요?

1 답변

0 투표

ASCII 코드표 범위 안의 문자는 1바이트 로 계산되고, ASCII 범위 밖의 문자는 2바이트로 계산됩니다.

한 = 2

한a = 3

한글@ = 5

한글☆ = 6

UTF-8 문자셋인 경우엔, ASCII 범위 1byte, ASCII 확장문자 2byte, 그외 문자(다국어) 3byte, 향후 추가된 문자 4byte로 계산됩니다. UTF-8 문자는 1~4바이트까지 쓸수 있는 가변길이 문자입니다.

<?php

echo strlen('한'); // 3
echo strlen('한글'); // 6(3+3)
echo strlen('한글x'); // 7(3+3+1)

?>

mb_strlen 함수를 사용하면, 원하시는 결과를 얻을 수 있어요.

<?php

echo mb_strlen('한', 'utf-8');// 1
echo mb_strlen('한a', 'utf-8');// 2
echo mb_strlen('한글a', 'utf-8');// 3
echo mb_strlen('나눔팁팁', 'utf-8');// 4

?>

add
...