유용한 팁 공유 게시판
팁공유라고 해서 아주 특별하거나 기발한거 아니어도 됩니다.
자신이 제로보드를 사용하면서 생긴 자신만의 노하우나 아주 사소한 팁이어도 좋습니다.
자신에겐 아무것도 아니더라도 다른분들께는 분명 중요하고 소중한 팁이 될수 있을겁니다.
UTF-8을 설치 후 최근게시물에서 글짜가 잘리는 끝부분에 ��...로 표시되는경우는 현재 잘리는 것은
기존 제로보드4 (euc-kr)에서는 한글이 한글자당 2개의 공간을 사용하였지만. UTF-8에서는 3개의 공간을
사용하여 깨지는 현상이 발생합니다. 이러한 경우
lib.php 파일에 있는
// 문자열 끊기 (이상의 길이일때는 ... 로 표시) 이부분에 있는 내용을
아래와 같이 바꿔주시면 정상적으로 표시가 가능합니다.
function cut_str($msg,$cut_size) {
if($cut_size<=0) return $msg;
if(ereg("\[re\]",$msg)) $cut_size=$cut_size+4;
$max_size = $cut_size;
$i=0;
while(1) {
if (ord($msg[$i])>127)
$i+=3;
else
$i++;
if (strlen($msg) < $i)
return $msg;
if ($max_size == 0)
return substr($msg,0,$i)."...";
else
$max_size--;
}
}
적용을 하고 보니 한글은 잘 되는데 ZeroBord 관리자 페이지가 깨져있네요
저만 그런지 아닌지는 모르겠는데 여러번 zboard를 올렸다 내렸다 해보니
lib.php에 위의 문구를 적용하면 관리자 페이지의 한글이 깨지네요 아무래도
파싱에서 문제가 있는듯 한데 아직 사용한지 얼마안되서 잘 모르겠네요
확인해보시고 다른방법의 해결책이 있으시면 알려주세요~~ 수고하세요
보통 한글한자가 영자한자보다 너비가 깁니다. 그래서 문자열의 숫자로 자르게 되면, 같은 10개 문자를 추출했을 경우 한글이 영문의 2배가까운 너비가 발생하여 추출시 영문과 한글의 길이가 적당한 길이로 서로 맞추어 생성되지 않습니다. 제로보드는 euc-kr의 경우 이부분을 위해서 실제 추출할 문자열의 길이에 ord($msg[$i])>127 값의 카운트수에 0.6을 곱한값을 더하여 영문자와의 적당한 길이열을 맞추고 있습니다.
이에 적당한 길이열을 맞추어 생성하고 싶으신경우는 다음과 같이 하시면 됩니다.
대상 : lib.php파일의 cut_str펑션
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.3;
$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].$msg[++$i];
$point += 2;
}
$point++;
}
return $pointtmp;
}
바뀐 내용은
소스5번째줄
$cut_size=$cut_size+(int)$han*0.3;
원코드
$cut_size=$cut_size+(int)$han*0.6;
소스 14, 15번째 줄
$pointtmp.=$msg[$i].$msg[++$i].$msg[++$i];
$point += 2;
원코드
$pointtmp.=$msg[$i].$msg[++$i];
$point++;
입니다.





http://mng.homp.tk