통합검색

PHP

[PHP] sms 본문 내용 byte 계산 (멀티바이트로 계산하기 - 한글 2byte)



SMS의 내용을 byte로 계산할 때 일반적으로 한글, 특수문자는 2byte, 영어, 숫자 줄바꿈등은 1byte로 계산한다.
한글을 php나, javascript에서 UTF-8의 byte를 계산하는 경우 3byte로 계산하는데, sms 서비스의 경우 한글을 2byte로 계산해야 한다.


[!]mb_strwidth() 함수를 사용한 byte 계산[/!] 
아래와 같이 멀티바이트 (string width)로 계산하면 한글을 2byte로 계산할 수 있다.
 
function getByteLength($str) {
        $strlen = mb_strwidth(str_replace("\r\n", "\n", $str), 'UTF-8');
        return $strlen;
}
 
위 코드 중 str_replace("\r\n", "\n", $str) 코드는
리눅스의 경우 줄바꿈을 \r\n 으로 처리하기 때문에 2byte가 되는데,
이를 윈도우 기준인 \n으로 치환하여 1byte로 계산 하도록 한다.