본문 바로가기
  • 행복하게 오래오래 개발자로 살아가기
Old/PHP

글자수 줄이기 mb_strimwidth

by yundev 2013. 7. 17.
반응형

대개 PHP로 게시판을 만든다거나, 최근게시물을 뽑아온다거나 하는 등의 작업을 할 때면

정해놓은 가로크기(wIdth) 보다 글자수가 많은 경우 이를 잘라주어야 하는 경우를 만날 때가 많습니다.


여기서 보편적으로 사용하는 몇가지 명령으로는


1. strlen  - 글자수를 계산해서

2. substr - 정해놓은 값만큼 자르거나

3. mb_substr - UTF-8의 경우는 mb_명령을 붙여서 자른 후에

4. echo ".." - 쩜쩜과 같은 텍스트를 마지막에 붙여넣어라


하는 4단계의 작업을 거치고는 하죠.


이를 귀찮게 생각한 나머지 일부 PHP개발자들은 글자수를 원하는대로 자를수 있는 갖가지의

Function 을 만들어서 사용해오곤 했으나.. PHP5 버전부터는 이러한 불편함을 한번에 해결해 줄수 있는

명령이 새로이 추가된 바 있으니.. 이 명령이 바로 mb_strimwidth 라 할 수 있겠습니다.


string mb_strimwidth ( string $str , int $start , int $width [, string $trimmarker [, string $encoding ]] )


위 구문이 php.net의 기본 구문이나. 이를 쉽게 풀어보면 아래와 같습니다.


mb_strimwidth('텍스트','시작위치','끝위치',"끝에붙일말","언어코드");


간략하게 기술해놓은 아래의 예제를 보시면 더욱 쉽게 이해하실 수 있습니다.


$text = '가나다라마바사';

$strim = mb_strimwidth($text, '0', '5', '...', 'utf-8');

echo $strim;


결과 = 가나다라마...


UTF-8로 정의된 $text의 값을 0번째 뒤부터 5번째 글자까지 자르고, 마지막에 ... 를 붙이는 일괄작업을 이 mb_strimwidth 명령 하나만으로 간편하게 지정할 수 있습니다.



$text = '가나다라마바사';

$strim = mb_strimwidth($text, '2', '6', '..', 'utf-8');

echo $strim;


결과 = 다라마바..


UTF-8로 정의된 $text의 값을 2번째 뒤부터 6번째 글자까지 자르고, 마지막에 .. 을 붙입니다.


대개 euc-kr로 정의된 문자는 한글 1자를 총 2개의 글자수를 가진 것으로 인식하기 때문에

보다 정확한 처리를 위해서라면 utf-8 로 변수값을 정의하는 것이 유리하다고 할 수 있습니다.


echo strlen("가나다"); => 6

echo mb_strlen("가나다"); => 3


따라서 PHP5 버전 이상의 환경이 구축된 서버를 이용하여 한글 자르기와 관련한 작업을 한다면

UTF-8을 기본언어셋으로 설정하여 mb_strimwidth 명령을 통해 작업의 간편화를 도모하시는 것이

여러모로 유리하다고 할 수 있겠죠?


참고 블로그 : http://darky.egloos.com/2860635

반응형

'Old > PHP' 카테고리의 다른 글

phpmailer 사용법  (0) 2013.08.01
php 익스플로어 버젼 체크  (0) 2013.08.01
facebook comment plugin json parsing  (0) 2013.07.12
isset  (0) 2013.07.11
12시간 단위의 시간값 가져오기  (0) 2013.07.11