cut_str 함수를 영문과 한글을 같은 길이로 잘라보자.
링크
http://kr.php.net/manual/kr/function.mb-detect-encoding.php (359) http://egloos.zum.com/darky/v/2860635 (304)
여러분 모두가 아시다 시피
영문은 한글자당 1바이트
한글은 2바이트 입니다.
그런데 그누보드에서 쓰이는 cut_str함수
/lib/common.lib.php 에 있는 cut_str함수는 바이트 관계없이 그냥 글자수에 맞춰 자릅니다.
이것을 약간만 손보면 영문이든 한글이든 비슷한 길이(글자수가 아닌 width)로 맞춰줄수 있습니다.
[code]
function cut_str($str, $len, $suffix="…", $mb_strimwidth=false)
{
//if로 mb_strimwidth의 불린값을 받아와서 사용할껀지 말껀지 처리
if ($mb_strimwidth == false) {
$arr_str = preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
$str_len = count($arr_str);
if ($str_len >= $len) {
$slice_str = array_slice($arr_str, 0, $len);
$str = join("", $slice_str);
return $str . ($str_len > $len ? $suffix : '');
} else {
$str = join("", $arr_str);
return $str;
}
} else {
//mb_strimwidth를 사용할 경우 아래처럼 처리
//글자수를 줄이려는 문자열이 인코딩이 어떻게 되는지 판단
$str_encoding = mb_detect_encoding($str, 'UTF-8, EUC-KR');
//mb_strimwidth 내장함수를 이용하여 글씨를 자름
$result_str = mb_strimwidth($str, 0, $len, $suffix, $str_encoding);
return $result_str;
}
}
// ex) cut_str("대한민국 만세", 3, "...", true);
[/code]
이렇게 간단히 만들어 보았습니다.
이건뭐 php몰라도 자바스크립트 다룰정도 실력이면 충분하네요.
내장함수를 이용하는것이 포인트고 제가 만들었다고 말하기도 민망할 정도니까요...
암튼 이런 소소한 문제로 골머리 앓으시는 분들에게 도움 됬으면 합니다.
mb_strimwidth의 자세함 사용법은 링크로 남겨 둡니다.
링크1은 php.net의 설명
링크2는 잘 설명된 블로그 입니다.
영문은 한글자당 1바이트
한글은 2바이트 입니다.
그런데 그누보드에서 쓰이는 cut_str함수
/lib/common.lib.php 에 있는 cut_str함수는 바이트 관계없이 그냥 글자수에 맞춰 자릅니다.
이것을 약간만 손보면 영문이든 한글이든 비슷한 길이(글자수가 아닌 width)로 맞춰줄수 있습니다.
[code]
function cut_str($str, $len, $suffix="…", $mb_strimwidth=false)
{
//if로 mb_strimwidth의 불린값을 받아와서 사용할껀지 말껀지 처리
if ($mb_strimwidth == false) {
$arr_str = preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
$str_len = count($arr_str);
if ($str_len >= $len) {
$slice_str = array_slice($arr_str, 0, $len);
$str = join("", $slice_str);
return $str . ($str_len > $len ? $suffix : '');
} else {
$str = join("", $arr_str);
return $str;
}
} else {
//mb_strimwidth를 사용할 경우 아래처럼 처리
//글자수를 줄이려는 문자열이 인코딩이 어떻게 되는지 판단
$str_encoding = mb_detect_encoding($str, 'UTF-8, EUC-KR');
//mb_strimwidth 내장함수를 이용하여 글씨를 자름
$result_str = mb_strimwidth($str, 0, $len, $suffix, $str_encoding);
return $result_str;
}
}
// ex) cut_str("대한민국 만세", 3, "...", true);
[/code]
이렇게 간단히 만들어 보았습니다.
이건뭐 php몰라도 자바스크립트 다룰정도 실력이면 충분하네요.
내장함수를 이용하는것이 포인트고 제가 만들었다고 말하기도 민망할 정도니까요...
암튼 이런 소소한 문제로 골머리 앓으시는 분들에게 도움 됬으면 합니다.
mb_strimwidth의 자세함 사용법은 링크로 남겨 둡니다.
링크1은 php.net의 설명
링크2는 잘 설명된 블로그 입니다.
댓글 4개
10년 전
좋은 내용 감사합니다.
10년 전
감사합니다!
브러운아이
7년 전
cut_str 함수를 영문과 한글을 같은 길이로 잘라보자.
격렬한저항
7년 전
cut_str 함수를 영문과 한글을 같은 길이로 잘라보자.
게시판 목록
그누보드5 팁자료실
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 2695 | 1개월 전 | 170 | ||
| 2694 | 1개월 전 | 132 | ||
| 2693 | 1개월 전 | 143 | ||
| 2692 | 1개월 전 | 157 | ||
| 2691 | 1개월 전 | 311 | ||
| 2690 | 1개월 전 | 217 | ||
| 2689 |
|
1개월 전 | 423 | |
| 2688 | 1개월 전 | 275 | ||
| 2687 |
선택과집중
|
1개월 전 | 312 | |
| 2686 | 1개월 전 | 275 | ||
| 2685 | 1개월 전 | 329 | ||
| 2684 | 2개월 전 | 462 | ||
| 2683 | 2개월 전 | 261 | ||
| 2682 | 2개월 전 | 287 | ||
| 2681 |
선택과집중
|
2개월 전 | 263 | |
| 2680 | 2개월 전 | 312 | ||
| 2679 |
|
2개월 전 | 417 | |
| 2678 |
|
2개월 전 | 487 | |
| 2677 | 2개월 전 | 311 | ||
| 2676 | 2개월 전 | 287 | ||
| 2675 |
선택과집중
|
2개월 전 | 464 | |
| 2674 |
|
2개월 전 | 309 | |
| 2673 | 2개월 전 | 322 | ||
| 2672 | 2개월 전 | 272 | ||
| 2671 | 2개월 전 | 244 | ||
| 2670 | 2개월 전 | 356 | ||
| 2669 | 2개월 전 | 274 | ||
| 2668 |
선택과집중
|
2개월 전 | 470 | |
| 2667 |
선택과집중
|
2개월 전 | 455 | |
| 2666 |
선택과집중
|
3개월 전 | 388 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기