[제나플러스] cut_str 함수에서 UTF-8을 위한 마지막 글자 처리 > 팁앤테크

본문 바로가기
사이트 내 전체검색

팁앤테크

[제나플러스] cut_str 함수에서 UTF-8을 위한 마지막 글자 처리

페이지 정보

본문

common.lib.php 파일 내부의 cut_str() 함수를 일단 한번 수정해봤습니다.
제가 이쪽분야로는 워낙 지식이 짧은 관계로, 첨부된 그림파일 정도의 테스트를 해보고 올립니다.
고수님들께서 한번 검토해보시고 오류가 있으면 댓글을 가차없이 달아주시기 바랍니다. ^^;

4바이트는 사용되는 일이 거의 없다라고 하던데, 그냥 넣었습니다. (ㅡ.ㅡ;)a
그리고, 중간문자가 깨질 수 있는 상황에 대해서는 고려하지 않았습니다.

참고로, 그림의 문자들은... 다른나라 글자하고는 별로 친하지 않은 관계로 무슨 내용인지는 모릅니다. ㅡ.ㅡ;

function cut_str($str, $len, $suffix="…")
{
    global $g4;

    $s = substr($str, 0, $len);
    $cnt = 0;    // 마지막 글자에서 잘린 후 남겨진 바이트 수

    $s_len = strlen($s);

    // UTF-8 마지막 글자 깨짐 처리
    if (strtoupper($g4['charset']) == 'UTF-8') {
        for ($i=0; $i<$s_len; $i++) {

            $oc = ord($s[$i]);

            if ( ($oc & 0xF8) == 0xF0 )        // 4byte
            {
                if ($i+4 >= $s_len) { $cnt = ($s_len-$i)%4;    break; }
                else $i+=3;
            }
            else if ( ($oc & 0xF0) == 0xE0 )    // 3byte
            {
                if ($i+3 >= $s_len) { $cnt = ($s_len-$i)%3;    break; }
                else $i+=2;
            }
            else if ( ($oc & 0xE0) == 0xC0 )    // 2byte
            {
                if ($i+2 >= $s_len) { $cnt = ($s_len-$i)%2;    break; }
                else $i++;
            }
            else                                    // 1byte
                $cnt = 0;
        }
        if ($cnt)
            $s = substr($s, 0, $s_len - $cnt);
    }
    else    // EUC-KR, 마지막 글자 깨짐 처리
    {
        for ($i=0; $i<$s_len; $i++) {

            $oc = ord($s[$i]);
            if ( $oc > 0x7F )
            {
                if ($i+2 >= $s_len ) { $cnt = ($s_len-$i)%2;    break; }
                else $i++;
            }
            else
                $cnt = 0;
        }
        if ($cnt)
            $s = substr($s, 0, $s_len - $cnt);
    }

    if (strlen($s) >= strlen($str))
        $suffix = "";
    return $s . $suffix;
}
추천0

댓글목록

등록된 댓글이 없습니다.

Total 825건 10 페이지
  • RSS
팁앤테크 목록
번호 제목 글쓴이 조회 추천 날짜
600 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17610 0 11-25
599 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17601 0 04-10
598 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17580 0 01-24
597 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17574 0 06-11
596 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17564 0 01-08
595 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17555 0 04-10
594 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17553 0 03-20
593 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17527 0 11-01
592 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17423 0 11-07
591 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17385 0 01-30
590 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17353 0 12-16
589 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17353 0 03-27
588 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17353 0 11-09
587 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17349 0 02-18
586 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17315 0 05-12
585 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17315 0 10-22
584 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17295 0 11-05
583 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17276 0 06-12
582 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17273 0 01-19
581 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17247 0 12-01
580 포인트쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17231 0 05-07
579 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17220 0 10-08
578 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17217 0 05-26
577 제로쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17172 0 08-24
576 월드컵쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17165 0 03-31

검색

회원로그인

회원가입

사이트 정보

株式会社YHPLUS / 대표 : ZERO
〒140-0011 東京都品川区東大井2-5-9-203
050-5539-7787
오픈카카오톡 (YHPLUS) :
https://open.kakao.com/o/slfDj15d

접속자집계

오늘
8,260
어제
7,612
최대
8,260
전체
1,625,445
Copyright (c) 株式会社YHPLUS. All rights reserved.