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 함수를 영문과 한글을 같은 길이로 잘라보자.
게시글 목록
| 번호 | 제목 |
|---|---|
| 24318 | |
| 24317 | |
| 24315 | |
| 24309 | |
| 24294 | |
| 24293 | |
| 24277 | |
| 24262 | |
| 24260 | |
| 24253 | |
| 24251 | |
| 24236 | |
| 24233 | |
| 24228 | |
| 24226 | |
| 24221 | |
| 24214 | |
| 24203 | |
| 24201 | |
| 24199 | |
| 24196 | |
| 24195 | |
| 24194 | |
| 24192 | |
| 24191 | |
| 24187 | |
| 24185 | |
| 24183 | |
| 24172 | |
| 24168 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기