글자수에따라 자르기 할때 한글과 영문의 길이가 다르다?!
간간히 조용히 글올리고 가는 smokingbird입니다.
개발중인 사이트에 사용했던 팁을 소개해볼까 하구요
기능의 효율성이나 실용성에대해선 생각하지않고 만든거라 엉망일 수 있습니다.
기본적으로 그누에서 제공되는 cut_str 로는
영어는 잘되지만 한글은 이상하게 마지막몇글자가 깨지곤했는데
그래서 그 함수를 들여다보니 substr 함수를 사용중이더랍니다.
그래서 mb_substr 함수로 교체해주니 이번엔 길이차이가 이상하게 나던걸로 기억합니다
(오래되서 가물)
그래서 다른방법으로 시도했습니다.
lib/common.lib.php 의 1000번줄쯤입니다.
/*function cut_str($str, $len, $suffix="…")
{
global $g4;
$s = substr($str, 0, $len);
$cnt = 0;
for ($i=0; $i<strlen($s); $i++)
if (ord($s[$i]) > 127)
$cnt++;
if (strtoupper($g4['charset']) == 'UTF-8')
$s = substr($s, 0, $len - ($cnt % 3));
else
$s = substr($s, 0, $len - ($cnt % 2));
if (strlen($s) >= strlen($str))
$suffix = "";
return $s . $suffix;
}*/==>원래함수
function cut_str($str, $len, $suffix="…")
{
global $g4;
$s = mb_strimwidth($str, 0, $len*2,"","utf-8");
$cnt = 0;
for ($i=0; $i<strlen($s); $i++)
if (ord($s[$i]) > 127)
$cnt++;
$s = mb_strimwidth($str, 0, $len*2,"","utf-8");
if (strlen($s) >= strlen($str))
$suffix = "";
return $s . $suffix;
}///변환된함수
계산한건아니고 한 열번 스무번 함수를 이리저리 바꿔가면서 영문과 한글이 모두 같은위치에서 마무리되도록 만들었습니다.
사용 언어코드는 utf-8을 대상으로 해보았습니다.
무식해서 멀티바이트용 함수를 그냥 utf-8로 사용 ...
개발중인 사이트에 사용했던 팁을 소개해볼까 하구요
기능의 효율성이나 실용성에대해선 생각하지않고 만든거라 엉망일 수 있습니다.
기본적으로 그누에서 제공되는 cut_str 로는
영어는 잘되지만 한글은 이상하게 마지막몇글자가 깨지곤했는데
그래서 그 함수를 들여다보니 substr 함수를 사용중이더랍니다.
그래서 mb_substr 함수로 교체해주니 이번엔 길이차이가 이상하게 나던걸로 기억합니다
(오래되서 가물)
그래서 다른방법으로 시도했습니다.
lib/common.lib.php 의 1000번줄쯤입니다.
/*function cut_str($str, $len, $suffix="…")
{
global $g4;
$s = substr($str, 0, $len);
$cnt = 0;
for ($i=0; $i<strlen($s); $i++)
if (ord($s[$i]) > 127)
$cnt++;
if (strtoupper($g4['charset']) == 'UTF-8')
$s = substr($s, 0, $len - ($cnt % 3));
else
$s = substr($s, 0, $len - ($cnt % 2));
if (strlen($s) >= strlen($str))
$suffix = "";
return $s . $suffix;
}*/==>원래함수
function cut_str($str, $len, $suffix="…")
{
global $g4;
$s = mb_strimwidth($str, 0, $len*2,"","utf-8");
$cnt = 0;
for ($i=0; $i<strlen($s); $i++)
if (ord($s[$i]) > 127)
$cnt++;
$s = mb_strimwidth($str, 0, $len*2,"","utf-8");
if (strlen($s) >= strlen($str))
$suffix = "";
return $s . $suffix;
}///변환된함수
계산한건아니고 한 열번 스무번 함수를 이리저리 바꿔가면서 영문과 한글이 모두 같은위치에서 마무리되도록 만들었습니다.
사용 언어코드는 utf-8을 대상으로 해보았습니다.
무식해서 멀티바이트용 함수를 그냥 utf-8로 사용 ...
댓글 3개
13년 전
팁 감사합니다.
13년 전
한번 이용해봐야겠습니다.
감사합니다.
감사합니다.
Marlboro
13년 전
감사합니다. 한방에 해결했습니다...^^
게시판 목록
그누4 팁자료실
그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.
나누면 즐거움이 커집니다.
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 3109 |
gstaron
|
12년 전 | 4784 | |
| 3108 |
|
12년 전 | 6798 | |
| 3107 | 12년 전 | 6830 | ||
| 3106 |
|
12년 전 | 8212 | |
| 3105 | 12년 전 | 6275 | ||
| 3104 | 12년 전 | 4791 | ||
| 3103 |
|
12년 전 | 4868 | |
| 3102 | 12년 전 | 3948 | ||
| 3101 | 12년 전 | 6980 | ||
| 3100 | 12년 전 | 6034 | ||
| 3099 | 12년 전 | 9972 | ||
| 3098 | 12년 전 | 3676 | ||
| 3097 |
lainfox
|
12년 전 | 4452 | |
| 3096 |
|
12년 전 | 10421 | |
| 3095 | 12년 전 | 4445 | ||
| 3094 | 12년 전 | 5103 | ||
| 3093 |
하늘바람구름
|
12년 전 | 4290 | |
| 3092 |
|
12년 전 | 8893 | |
| 3091 |
|
12년 전 | 9324 | |
| 3090 |
|
12년 전 | 6551 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기