이걸 어떻게 표현해야 할지몰라서 검색도 못하고 끙끙댔던 나란 여자.. 못난 여자...
결국 검색으로 못찾고 과장님 파일에서 찾았다.ㅋㅋㅋㅋㅋㅋ
쇼핑몰이나 게시판 등등에서 가끔 제목이 길거나 내용을 미리보여 줄 때,
긴 내용(혹은 제목)이라면 특정 byte 이상은 자르고 그뒤에 ".."을 붙여주는 것!
도대체 이걸 한 단어로 뭐라고 표현해야하지.ㅜㅜ??
암튼 그걸 할려고 하는데 한글은 2byte 문자이다 보니 지정해놓은 byte가 예를들어 200byte라면,
문자하나가 잘려서 2byte짜리 문자가 절반만 불러와져서 한글이 깨져 보인다.
검색해보니 mb_substr()을 사용하면 된다는데,
php 버전이 안맞아서 사용이 불가능했다.ㅜㅜ
간단하게 생각해서 그냥 아예 공백들을 싹다 제거해서 들고오면 절반만 들고 올일은 없지 않을까?
했는데 그건 또 아니라고..ㅜㅜ
기본적인 건 substr() 함수를 사용해서 문자열을 잘라주면 되는데 왜때문에 내생각처럼 잘되질 않니ㅜㅜ???
하고있다가 과장님이 파일을 보여주셨당.
function CutString($str, $len, $checkmb=false, $tail='...') {
preg_match_all('/[\xEA-\xED][\x80-\xFF]{2}|./', $str, $match);
$m = $match[0];
$slen = strlen($str);
$tlen = strlen($tail);
$mlen = count($m);
if ($slen <= $len) return $str;
if (!$checkmb && $mlen <= $len) return $str;
$ret = array();
$count = 0;
for ($i=0; $i < $len; $i++) {
$count += ($checkmb && strlen($m[$i]) > 1)?2:1;
if ($count + $tlen > $len) break;
$ret[] = $m[$i];
}
return join('', $ret).$tail;
}
짜란~ 이함수가 있다면 한글이 깨지지 않고도 글자를 원하는 만큼만 보여주고 "..." 으로 처리가 가능하다.
일단 CutString 함수는 클래스 안에 선언된 함수이다.
클래스안에 필요한 모든 함수를 다 선언하고 만들어놓은 뒤,
php 페이지에서 include 해서 함수를 필요할 때마다 불러오는 방식인데
substr이 필요한 곳에 함수를 로드!
$변수=$생성자->CutString(substr할값, byte, substr의 길이, 자른후 붙여줄 문자열);
이런식으로 불러온다.
예를 들면, 「$context=$Func->CutString($Review[16], "240", strlen($Review[16]), "...");」과 같은 형식...
'Programming > php' 카테고리의 다른 글
[javascript] 카카오링크 사용하기(모바일전용) (0) | 2015.12.15 |
---|---|
[php] 오랜만에 php 관련함수들! 배열 & 파일업로드 관련~ (0) | 2014.04.03 |
[php&javascript] 레이어형 팝업창 띄우기 (0) | 2014.02.11 |
[PHP] dirname()함수와 $_SERVER 관련 상수들 (0) | 2014.01.09 |
[PHP] MySql 데이터 끌어와서 리스팅&페이징 하기 (0) | 2014.01.08 |