웹마스터 팁

오늘 우연히 substr()을 사용하다가 홀수길이로 한글을 잘라도 정상적으로 출력되는
재밌는 현상을 목격했습니다. ^^

<?
$strOrigin = "가나다라마";
$intLen = 5;

$strOrigin = substr($strOrigin, 0, $intLen);

echo "Length: " . strlen($strOrigin) . "<p>" . $strOrigin;

/*
- 결과 -

Length: 5
가나

*/
?>


위에서 보다시피 5bytes로 자르면 보통 "가나?" 와 같이 나오는데
여기선 "가나"로 출력되네요.(그런데 문자열의 길이는 4가 아닌 5라는 신기한 사실)

제가 사용하는 환경은 Apache/1.3.31 (Win32) PHP/4.3.6입니다.
웹브라우저는 IE 5.5이고요.


PHP에서 substr()에 8bit문자의 처리를 추가한 걸까요??
아시는 분 있으면 코멘트 달아주세요.




참..혹시 한글 깨지지 않고 잘라주는 함수 필요하신분 아래 함수 참고하세요.
허접이지만 제가 만들어 봤습니다.


// $strOrigin : 잘라줄 문자열         $intLen: 자를 길이
function cut_str($strOrigin, $intLen)
{
        // 빈 문자열이거나, 길이가 0이면 false 리턴.
        if($strOrigin == "" || $intLen == 0)
                return false;

        // 문자열의 길이보다 자를 길이가 길면, 원래 문자열을 그대로 리턴
        if(strlen($strOrigin) <= $intLen)
                return $strOrigin;
        else
        {
                $strTemp = substr($strOrigin, 0, $intLen);

                // 자를 길이가 홀수이고 문자열이 영문자가 아닐 경우엔, 마지막 부분을 추가로 제거
                if(($intLen % 2) == 1 && ord(substr($strTemp, -1, 1)) >= 128)
                        $strTemp = substr($strTemp, 0, -1);

                return $strTemp;
        }
}
제목 글쓴이 날짜
서브디렉토리,파일까지 모두 삭제하는 함수. [5] Lepas 2004.08.24
Echo 여러번호출? 할때 깜빡임 없애기 [5] file 신희돈 2004.09.03
썸네일 생성시 unsharp mask활용할수 있는 팁..소스 file 앗싸~~ 곰세마리 2004.09.06
랜덤으로 파일 가져와서 재생하고, 끝나면 다른 랜덤파일 또 재생하기.. 겜방 2004.09.10
-긴급소스 수정본- winamp 방송정보 알아내기 file 이승원 2004.09.11
날씨별로 다양한 말이나 음악 보여주기[수정] [4] 로크 2004.09.13
crontab 실제 사용 예제, 온라인 웹 게임 운영하기 (팁 + 오픈 소스 게임 소개 ^^;) [1] 박용구 2004.09.14
'' -> ""로 만들기(?) [2] 플로렐라 2004.09.17
trim 과 addslashes를 일괄처리하는 함수 [7] BigStone 2004.10.02
echo 안에 더블쿼테이션을 사용하기 [15] 토토루 2004.10.05
윈도우XP 서비스팩2 사용자인지 아닌지 판별하기 [22] file 天高馬肥[쉬드] 2004.10.09
그래프 만들어주는 소스 [10] 미친개 2004.10.15
MySQL의 패턴 매칭 맛보기 [2] 손상모 2004.10.19
한글자르는 문제 PHP차원에서 해결된 건가? [5] 겜방 2004.10.20
IP to 정수변환(;) [4] 플로렐라 2004.10.21
www자동 붙히기 [8] 미오유 2004.10.22
[타키의 초보강좌]PHP 기초 강좌 제 1탄[패스워드 인증] [8] 타키 2004.10.23
소수[솟수] 쉽게 구하기[에라토스테네스의 해 알고리즘사용] , 경우의 수 구하기 [5] 타키 2004.10.23
[타키의 초보강좌]PHP 기초 강좌 제 2탄[mysql로 들어가보자.] [2] 타키 2004.10.24
나만의 미니홈 만들기 ㅡ 글쓰기에 앞서... [1] 예뜨락 2004.11.17