PHP 에서 한글/영어 길이 맞춰서 자르기
Jul 10
PHP 에서 한글과 영어의 길이를 맞춰서 자르는 loose한 코드(UTF-8)
function utf8_strcut( $str, $size )
{
$substr = substr( $str, 0, $size * 2 );
$multi_size = preg_match_all( '/[\\x80-\\xff]/', $substr, $multi_chars );
if ( $multi_size > 0 )
$size = $size + intval( $multi_size / 3 ) - 1;
if ( strlen( $str ) > $size )
{
$str = substr( $str, 0, $size );
$str = preg_replace( '/(([\\x80-\\xff]{3})*?)([\\x80-\\xff]{0,2})$/', '$1', $str );
$str .= '...';
}
return $str;
}
mb_strcut 으로 문장을 자르니 영문자등이 포함되어 있는 경우에 길이가 잘 맞지 않아서 영어랑 한글 길이에 맞춰서 자르는 함수를 여기저기서 찾아봤는데 영 길다란 코드 밖에 없길래 타이핑 하기 귀찮아서 만듬;;; 대강 급조한 코드라 속도나 정확성등에 대해서는 책임질 수 없음;;;
mb_srtcut 을 안쓰고 substr 을 쓰면 마지막 글자가 한글일 경우에 문자가 이상하게 바뀌는데 그런 경우엔 위의 정규식 매치를 변형해서 대강 걸러내면 됨…
게으름이 인생인녀석(…)
+ 글자수가 적을 때 끝선이 잘 안맞는 경향이 있어서 그 문제 해결과 함께 아예 mb_strcut 을 안써도 되도록 조금 개선해서 다시 올렸습니다. 조금 더 범용적으로 쓰일 수 있겠네요..마는..아까의 그 간략한 코드가 그립네요…-_-
트위터
파랑새
아이폰앱
RSS