PHP에서 문자열의 일부만 가져와야(잘라야) 할 경우 일반적으로 substr() 함수를 사용하죠. 그런데 만약 한글이라면 이 함수를 사용할 경우 뒷부분에 의도치 않은 문자가 나타날 수 있습니다.



# php 문자열 자르는 방법먼저 위와같이 이상한 문자가 나타나는 이유는 한글 인코딩의 byte 단위가 영문과 다르기 때문입니다. 이때는 mb_substr() 함수를 사용해 해결할 수 있습니다.

mb_substr(문자열, 시작위치, 나타낼 길이, 인코딩방식);


인코딩 인자에는 아래와 같은 문자 인코딩이 사용될 수 있습니다.

  • i. UTF-8
  • ii. EUC-KR

그럼 아래에서 예제를 사용하여 자세히 알아봅니다.


# mb_substr()함수의 예제
만약 $sitename가 '랭킹이즈' 이라고 할 경우 아래와 같이 사용할 수 있습니다. 두 개의 함수를 모두 사용하여 결과가 어떻게 다른지 알아봅니다.
<?php
  $sitename = '웹이즈프리';
  echo mb_substr($sitename, 0, 3, 'utf-8');
  // UTF-8 인코딩인 경우

  echo mb_substr($sitename, 0, 3, 'euc-kr');
  // EUC-KR 인코딩인 경우
?>

결과는 아래와 같이 나타납니다.
웹이즈

// mb_substr() 함수를 사용해 정확히 한글의 일부만 출력

이처럼 한글인 경우에 mb_substr() 함수를 사용하면 바이트 단위가 아닌 문자열의 길이로 쉽게 자를 수 있습니다.