[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 환경에서 한글을 자를 때 끝에 이상한 부호가 붙는 일을 피할 수 있을 것 같다.