메뉴 건너뛰기

프로그램언어

2015.04.14 19:12

한글자르기 substr

조회 수 25198 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

완성형 한글의 경우 한글은 2바이트로 영어는 1바이트로 구성되기 때문에 PHP의 substr() 함수를 쓸 때 한글이 깨지는 경우가 있다. 이런 경우 mb_substr() 함수로 대체하면 된다.


substr ($str, $start_Pos, $length);
$Str에 담고 있는 문자열의 $start_Pos부터 길이$length만큼을 잘라내어 반환한다

mb_substr ($str, $start_Pos, $length, $encoding);
$str에 담고 있는 문자열의 $start_Pos부터 길이$length만큼을 잘라내어 $encoding 형식에 맞게 반환한다


mb_substr($str, 0, 10, 'EUC-KR');
mb_substr($str, 0, 10, 'UTF-8');

function strcut_euckr($msg, $limit) {    // 완성형 한글 자르기
    $msg = substr($msg, 0, $limit);
    for ($i = $limit - 1; $i > 1; $i--) {   
        if (ord(substr($msg,$i,1)) < 128) break;
    }
    $msg = substr($msg, 0, $limit - ($limit - $i + 1) % 2);
    return $msg;
}


function strcut_utf8($str, $len, $checkmb=false, $tail='') {  // UTF-8 한글자르기
    /** UTF-8 Format
    * 0xxxxxxx = ASCII, 110xxxxx 10xxxxxx or 1110xxxx 10xxxxxx 10xxxxxx
    * latin, greek, cyrillic, coptic, armenian, hebrew, arab characters consist of 2bytes
    * BMP(Basic Mulitilingual Plane) including Hangul, Japanese consist of 3bytes
    **/
    preg_match_all('/[\xE0-\xFF][\x80-\xFF]{2}|./', $str, $match); // target for BMP
     
    $m = $match[0];
    $slen = strlen($str); // length of source string
    $tlen = strlen($tail); // length of tail string
    $mlen = count($m); // length of matched characters
     
    if ($slen <= $len) return $str;
    if (!$checkmb && $mlen <= $len) return $str;
     
    $ret = array();
    $count = 0;
    for ($i=0; $i < $len; $i++) {
        $count += ($checkmb && strlen($m[$i]) > 1)?2:1;
        if ($count + $tlen > $len) break;
        $ret[] = $m[$i];
    }    
    return join('', $ret).$tail;
}



List of Articles
번호 제목 날짜 조회 수
220 array_slice 배열의 일부를 추출 2016.12.23 20775
219 [PHP] 게시판 글쓰기와 이미지 파일 DB 저장 및 불러오기 예제 2017.02.19 35886
218 PHP에서 데이터를 엑셀(Excel)로 저장 2017.02.19 18428
217 파일업로드 2017.02.19 19352
216 phpexcel을 이용한 PHP로 엑셀파일 읽기와 생성 file 2017.03.06 22787
215 PHPExcel 클래스를 이용해 Excel 2007~2010 의 xlsx 파일 읽기 (100만 행 까지) 2017.03.06 21695
214 CodeIgniter에서 PHPExcel 사용하기 file 2017.03.06 20289
213 PHP로 엑셀 자료 MySQL에 넣기 2017.03.06 17875
212 메일주소의 골뱅이를 그림처리하기 2017.03.06 15508
211 오류 메시지 출력(alert) 및 페이지 이동(refresh) 관련 2017.03.06 18568
210 ajax refresh 시키기(자동리플래쉬) with php file 2017.03.06 23185
209 Ajax로 구연한 실시간 서버시간출력 file 2017.03.06 21031
208 지엠 웹에디터 v1.1 (저작권표시없음)| file 2017.03.06 17109
207 text파일에 한줄씩 내용추가하기 2017.03.06 17535
206 PHP 만년달력 소스 2017.03.06 17063
205 PHP EXCEL export시 시트 이름 지정하여 여러 시트에 데이터 쓰기 2017.03.06 18266
204 PHP의 유동변수!? - $a1 ~ $a2 같은 형식의 변수를 반복문 돌릴때... 2017.03.06 16610
203 PHP에서 Excel 파일을 만들 수 있는 PHPExcel file 2017.03.06 17112
202 php로 db 컨트롤 1 2017.03.06 15769
201 php 문자열관련 함수 2017.03.06 15580
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved