※ 광고성글은 사전 동의 없이 삭제 합니다.
  한글 문자열 가져오기 자르기, Mb_substr() utf-8 번호 : 545 번글        조회 : 124
작    성    자 : 황홍구  메일 보내기

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

 

# php 문자열 자르는 방법

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


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

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

 

# mb_substr()함수의 예제

만약 $sitename가 '웹이즈프리​' 이라고 할 경우 아래와 같이 사용할 수 있습니다. 두 개의 함수를 모두 사용하여 결과가 어떻게 다른지 알아봅니다.

<?php
  $sitename = '웹이즈프리';
  echo mb_substr($sitename, 0, 3, 'utf-8');
  echo mb_substr($sitename, 2,null, 'utf-8);
  // UTF-8 인코딩인 경우

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

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

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

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

 

메모남기기 한글 150자 영문300자 이내
작성자         패스워드                현재  0 byte
[관련글] 없음 작성일시 : 2020-11-11 11:26:05
Copyright(c) 2003 xirom all right reserved vol.3
Contact xirom@xirom.net form more information