function StringCut( $String, $Length, $EndMark='' ) {
 // 자를필요없으면 리턴
 if( strlen( $String ) <= $Length ) return $String;

 for( $i=0; $i<strlen( $String ); $i++ ){
  //아스키코드 129 번부터는 2 Byte 문자
  //2 Byte 문자인경우 1 Byte 를 더 읽은 샘으로 침.
  if( ord( substr( $String, $i-1, $i ) ) > 128 ){
   $i++;
   $Length++;
  }
  //$Length 까지 왔을경우 리턴
  if( $i >= $Length ){return substr( $String, 0, $Length ).$EndMark; }
 }
 // 자를필요가 없지만 글자수와 byte 수를 비교하지 못함으로
 // 루프를 다돌아도 리턴되지 않는다면 그냥 월래 문자열 return;
 return $String;
}

출처 : http://blog.naver.com/ryl9924/140172820219

반응형
,