대개 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 |