시작페이지로 즐겨찾기추가
로그인
회원가입 l 출석체크 l 마이페이지 l CGIMALL
자료실 사이트등록 랭킹100 프로그램리뷰 관리자추천자료 초보가이드
커뮤니티
전체 펼쳐보기
퀵메뉴링크 jquery , CSS , PHP , Javascript , 무료폰트 , ASP
상세검색
> 커뮤니티 > 골드팁 상세보기
커뮤니티 구인구직
사이트등록
현재접속자 새로고침
게시판타이틀 골드팁 / 상세보기
트위터로 보내기 미투데이로 보내기 싸이월드 공감
추천수 256 | 조회수 2,670 | 등록일 2002-06-03 16:56:56

닉네임

HappyCGI

제목

한글 자르기2 (좀더 깨끗하게 ^.^)
내용
어떤 데이터를 받거나 얻은 후, 데이터베이스에 넣거나 웹상에 표출할 때, 그 것이 너무 길어서 데이터베이스에서 받아들이지 않거나, 웹 페이지의 모양이 이상한 경우가 있습니다.
이 때는 받은 데이터의 일부를 불가피하게 잘라내야 하는 데, 영문이라면 큰 문제가 없지만 한글의 경우에는 문제가 됩니다.
이유는, 한글 한 글자를 나타내는 데 2바이트를 사용하기 때문입니다.
예를 들어 "우리나라 만세"를 10 바이트로 잘라내려면 "우리나라" 8바이트, 공백 1바이트, '만'자의 앞부분 1바이트가 남아서 출력될 때는 깨진 글자가 보여지게 됩니다.
이 때는 다음과 같은 코드를 사용하시면 됩니다.


[프로그램코드]
if( length($text) > 60 ) {
$text = substr($text,0,60);
$text =~ s/(([\x80-\xff].)*)[\x80-\xff]?$/$1/;
}



일단 문자열을 원하는 길이만큼만 남기고 잘라냅니다(substr).
남은 문자열의 끝부분에 대해서 정규식을 적용하는데, 한글의 첫 바이트는 항상 \x7f 보다 크므로 [\x80-\xff]., 즉 한글의 첫바이트일 수 있는 [\x80-\xff] 한 바이트와 '.' 한 바이트가 합쳐진 것을 '*' 하면 한글 0 또는 그 이상의 글자가 됩니다. 그리고 한글의 첫바이트인 [\x80-\xff] 하나만 남는다면 온전한 한글 문자열부분인 (([\x80-\xff].)*) 부분이 $1 이라는 변수에 남아있으므로 그것을 일치된 전체 텍스트에 대해서 치환합니다.
한글이 다루기 까다롭다고 해서 한글을 쓰지 않을 수는 없겠지요? 자랑스러운 한글, 열심히 써서 빛냅시다요!!


이글은 http://www.perl.or.kr/tips/cut_han.html 에서
발췌된 글입니다.
추천스크랩소스보기 목록
이전게시글 [팁] 아이디 영문으로만 입력하게 확인하기 2002-06-01 00:52:28
다음게시글 정규식 사용시 실제 일치된 부분 보기 2002-06-03 17:01:03