개발자의 끄적끄적

[php] unicode (UTF-8) 인코딩에서 한글 글자수 출력 및 iconv_substr [펌] 본문

개발/php

[php] unicode (UTF-8) 인코딩에서 한글 글자수 출력 및 iconv_substr [펌]

효벨 2020. 3. 3. 03:00
728x90
반응형

[php] unicode (UTF-8) 인코딩에서 한글 글자수 출력 및 iconv_substr [펌]

 

 

php 소스 파일이 "유니코드(UTF-8)" 인코딩으로 되어 있을 경우, 한글 문자열의 정확한 글자 수를 구하는 방법

"유니코드(UTF-8)" 인코딩에서, 한글 1글자는 3바이트입니다. 다만, 영문이나 공백문자나 기호 등은 여전히 1바이트입니다.

따라서 그냥 strlen() 함수로, 한글 글자 수를 구하면, 글자 수가 아니라, 바이트 수만 나옵니다.

이때는
mb_strlen("한글문자열", "UTF-8")
이런 함수를 사용하면, 정확한 글자 수를 구할 수 있습니다. 그런데 이 함수는 2바이트 문자열을 다루는 외부 모듈을 로딩해 주어야 사용할 수 있습니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<?php

  // strlen() 함수는, 유니코드(UTF-8) 인코딩에서

  // 한글은 3바이트, 영문이나 기호는 1바이트로 반환

  print strlen("Cool") . "글자 (영문 바이트 단위)<br />\n";

  // 4글자 (영문 바이트 단위)

 

  // 한글 1자는 3글자로 간주

  print strlen("우리나라") . "글자 (영문 바이트 단위)<br />\n";

  // 12글자 (영문 바이트 단위)

 

  // 유니코드(UTF-8) 한글 글자수 정확히 구하기

  print mb_strlen("총모아", "UTF-8") . "글자 (한글 1자를 1자로 인식)<br />\n";

  // 3글자 (한글 1자를 1자로 인식)

 

// iconv_substr

  $fir_name = iconv_substr('총모아',0,1,'utf-8');

  $last_name = iconv_substr('총모아',2,2,'utf-8');

  $view_name = $fir_name."*".$last_name; // 가운데만 *표

?>

 

출처 : http://chongmoa.com/php/817

반응형
Comments