최근게시물 게시판 에서 제목 자르기 나름대로 바꾼거 > 유익한 싸이트

본문 바로가기
 

최근게시물 게시판 에서 제목 자르기 나름대로 바꾼거

페이지 정보

작성자 이름으로 검색 댓글 0건 조회 8,189회 작성일 06-12-16 13:30

본문

게시물의 제목이 길면 잘라서 나타 낼 수 있습니다.



그런데 한글과 영어의 글자 크기가 달라서 잘랐을때



가나다라마바사...

sssssss...



이렇게 같은 글자 수로 자르면 길이 차이가 심하게 납니다.



그래서 요고를 제 나름대로 바꾼것이 lib.php 파일 900번째 줄 가까이의 문자열 끊기 함수 수정입니다.



// 문자열 끊기 (용장 수정본)

        function cut_str($msg,$cut_size) {

                if($cut_size<=0) return $msg;

                $point=1;

                for ($i=0;$i<strlen($msg);$i++) {

                        if ($point>$cut_size) return $pointtmp."...";

                       

                        if(ord($msg[$i])>127) {

                                if ($point==$cut_size) return $pointtmp."...";

                                $pointtmp.=$msg[$i].$msg[++$i];

                                $point+=0.4;

                        }

                                                               

                        elseif ( ord($msg[$i])==37 || ord($msg[$i])==92 || ord($msg[$i])==64 ) {

                                if ($point==$cut_size) return $pointtmp."...";

                                $pointtmp.=$msg[$i];

                                $point+=0.4;

                        }

                       

                        else {               

                                if ( !( ord($msg[$i])>64 && ord($msg[$i])<91 ) ){$point-=0.1;}

                                $pointtmp.= $msg[$i];

                                if ($point==$cut_size) return $pointtmp."...";

                        }

                       

                        $point++;

                }

                return $pointtmp;

        }



써보니까 이전보다 확실히 좋네요. 제목들이 그리 많이 차이 나지 않습니다.



// 문자열 끊기 (이상의 길이일때는 ... 로 표시)

        function cut_str($msg,$cut_size) {

                if($cut_size<=0) return $msg;

                if(ereg("\\[re\\]",$msg)) $cut_size=$cut_size+4;

                for($i=0;$i<$cut_size;$i++) if(ord($msg[$i])>127) $han++; else $eng++;

                $cut_size=$cut_size+(int)$han*0.6;

                $point=1;

                for ($i=0;$i<strlen($msg);$i++) {

                        if ($point>$cut_size) return $pointtmp."...";

                        if (ord($msg[$i])<=127) {

                                $pointtmp.= $msg[$i];

                                if ($point%$cut_size==0) return $pointtmp."...";

                        } else {

                                if ($point%$cut_size==0) return $pointtmp."...";

                                $pointtmp.=$msg[$i].$msg[++$i];

                                $point++;

                        }

                        $point++;

                }

                return $pointtmp;

        }

요게 원본입니다.



제로보드를 몰라서 소스 분석없이 함수만 바꾼것입니다. 버그 있으면 원본으로 바꾸시고..

버그 예상되는거 지적좀 해주세요. 전 제가 수정한걸 쓸 예정이라서요..


[이 게시물은 human님에 의해 2007-05-14 17:58:49 bilkboard1에서 복사 됨]
[이 게시물은 human님에 의해 2007-05-15 09:09:28 bulk3에서 이동 됨]

댓글목록

등록된 댓글이 없습니다.

Total 224건 12 페이지
유익한 싸이트 목록
번호 제목 글쓴이 조회 날짜
26 이름으로 검색 8213 05-27
25 이름으로 검색 8208 12-27
24 이름으로 검색 8203 04-07
열람중 이름으로 검색 8190 12-16
22 이름으로 검색 8165 12-27
21 이름으로 검색 8152 08-07
20 이름으로 검색 8143 01-20
19 이름으로 검색 8142 06-28
18 이름으로 검색 8136 05-23
17 이름으로 검색 8106 08-07
16 이름으로 검색 8088 08-07
15 이름으로 검색 8076 12-20
14 이름으로 검색 8063 09-12
13 이름으로 검색 8034 07-20
12 이름으로 검색 8032 09-08
11 이름으로 검색 7988 10-27
10 이름으로 검색 7920 08-23
9 이름으로 검색 7794 08-07
게시물 검색