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

본문 바로가기
 

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

페이지 정보

작성자 이름으로 검색 댓글 0건 조회 8,175회 작성일 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건 3 페이지
유익한 싸이트 목록
번호 제목 글쓴이 조회 날짜
188 이름으로 검색 8263 02-12
187 이름으로 검색 8651 01-24
186 이름으로 검색 15691 01-24
185 이름으로 검색 8323 01-15
184 이름으로 검색 190 01-15
183 이름으로 검색 8374 01-01
182 이름으로 검색 15159 01-01
181 이름으로 검색 14340 01-01
180 이름으로 검색 14273 12-20
179 이름으로 검색 13981 12-20
178 이름으로 검색 12626 12-20
177 이름으로 검색 8063 12-20
176 이름으로 검색 8253 12-20
175 이름으로 검색 8481 12-20
174 이름으로 검색 8302 12-19
173 이름으로 검색 12817 12-19
열람중 이름으로 검색 8176 12-16
171 이름으로 검색 8457 12-14
게시물 검색