[PHP] UTF-8 환경에서 한글을 원하는 글자수만큼 자르기

예전에야 EUC-KR도 많이 사용했지만 지금은 UTF-8로만 작업을 진행하다 보니 한글에서 문제가 많이 생긴다. 특히 게시판의 이름이나 제목 등에서 길이가 길 때는 적당히 잘라서 보여줘야 하는데 UTF-8환경에서는 끝에 이상한 부호가 붙는 경우가 다반사!! 그래서 결국 오늘 다른 일은 좀 미루고 이걸 해결하기 위한 방법 고민 중에 주어진 문자열을 문자 각각으로 나누고 글자수만큼 사용하면 되겠다.. 이런 생각에 도달했다. 휴~

<?php
function utf8_substr($str, $len=10) {
    $str_split = preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
    $str_slice = array_slice($str_split, 0, $len);
    $str = join("", $str_slice);

    return $str;
}
?>

위 함수가 바로 오늘의 결과물이다. 진짜 힘들었다. 먼저 preg_split(“//u”, $str, -1, PREG_SPLIT_NO_EMPTY); 라는 부분에서 문자열을 문자로 나눈 후 배열에 저장한다. 다음으로 생성된 문자 배열을 array_slice()로 글자수만큼 나눈다. 끝으로 join()을 이용해 배열을 합친다. 이런 과정을 거쳐서 UTF-8 환경에서 한글을 자를 때 끝에 이상한 부호가 붙는 일을 피할 수 있을 것 같다.

편리

PHP와 MariaDB, jQuery 등을 사용해 게시판, 쇼핑몰 솔루션을 개발합니다. 그누보드5와 영카트5 개발에 참여 했습니다. Linux와 Nginx는 물론 WordPress, Git 등에도 관심이 많습니다. 자전거 타기 및 사진 촬영을 취미로 하고 있습니다.

카카오톡 플러스친구 채팅 : NCUBE.NET

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.