함수좀 봐주세요^^

yongjong의 이미지

그누보드를 utf-8 로 쓰다가 글자수로 자르기 함수때문에 잘린부분이 깨져서,,

질문드립니다.

// 한글 한글자(2byte)는 길이 2, 공란.영숫자.특수문자는 길이 1
function cut_str($str, $len, $suffix="…")
{
    $s = substr($str, 0, $len);
    $cnt = 0;
    for ($i=0; $i<strlen($s); $i++)
        if (ord($s[$i]) > 127)
            $cnt++;
    $s = substr($s, 0, $len - ($cnt % 2));
    if (strlen($s) >= strlen($str))
        $suffix = "";
    return $s . $suffix;
}

원래의 코드입니다.

3byte문자도 깔끔하게 자르려면 어떻게 수정해야 되는지요?

정태영의 이미지

utf-8 을 정상적으로 지원하려면 무조건 2바이트 혹은 3바이트로 자르면 안됩니다... 한글 영역이 3바이트를 사용하기는 하지만... 무조건 멀티바이트 일경우 3바이트는 아니니까요 :)

예전에 관련된 코드를 짜둔게 있어서 링크를 겁니다 ... 3바이트 이상 차지하는 경우에 대한 처리를 안했기 때문에 --;; 그런 언어를 사용할 경우엔 문제가 생길 수도 있습니다...

http://mytears.org/resources/mysrc/php/unicode/utf8.php

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

yongjong의 이미지

감사합니다~

쏘나기이고 싶어라

차리서의 이미지

지금 사용하시는 php 엔진에 혹시 multibyte string 옵션이 켜져있거나 직접 켜실 수 있는 상황이라면 mb_substr 함수를 써보실 수도 있습니다.

--
자본주의, 자유민주주의 사회에서는 결국 자유마저 돈으로 사야하나보다.
사줄테니 제발 팔기나 해다오. 아직 내가 "사겠다"고 말하는 동안에 말이다!

yongjong의 이미지

앗~! 또 감사드립니다^^ 테스트용 리눅스에 깔린거라 가능할겁니다.
php5 이구요.

http://bbs.kldp.org/viewtopic.php?t=22177

이것은 어떤가요?

쏘나기이고 싶어라