블로그 프로필 이미지

2015. 3. 7. 22:32
SMALL





웹싸이트를 제작하다보면, 긴 문장의 글을 잘라야 할때가 있다. 하지만, 한글과 영문이 서로 다르게 잘리게 되어 상당히 골치 아플때가있다. 이럴때 쓰는 함수가 있다. 바로 아래와 같은 함수이다. 인자값들을 보면 문자, 시작위치, 자를길이, 문자 인코딩 의 값을 받는다.


 mb_substr 함수


mixed string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] )


위의 함수만 이용하여 문자열을 자를 수 있지만, 더 장확하게 문자열을 자르기 위해선 아래와 같은 함수와 같이 사용하는게 좋다. 아래의 mb_strlen 함수는 문자의 인코딩값에 따라, 한글이든 영문이든 글자수에 따라 같은 값이 나온다. 예를 들어 문자 인코딩이 urf-8 인 환경에서 "aaa" 라는 문자의 길이가 3 이라면 "하하하" 라는 문자의 길이도 3이 나오게 된다. 이함수의 인자값들을 보면 문자, 문자 인코딩 의 값을 받는다.


 mb_strlen 함수


mixed mb_strlen ( string $str [, string $encoding = mb_internal_encoding() ] )


그럼 지금부터 mb_substr 함수와 mb_strlen 함수를 이용하여, 문자열을 자른뒤 뒤에 ".." 을 붙여주는 함수를 만들어 보도록 하자. 우선 긴 설명보단, 아래의 예제소스를 보도록 하자.


 mb_substr 함수와 mb_strlen 함수를 이용하여 문자열을 자르는 예제


<?php
/* 함수 정의 */
function sub_string($string,$start,$length,$charset=NULL) {     
if($charset==NULL) {
        $charset='UTF-8';
      }
/* 정확한 문자열의 길이를 계산하기 위해, mb_strlen 함수를 이용 */
       $str_len=mb_strlen($string,'UTF-8'); 
       if($str_len>$length) {   
 /* mb_substr  PHP 4.0 이상, iconv_substr PHP 5.0 이상 */
        $string=mb_substr($string,$start,$length,'UTF-8');   
        $string.="..";
        }         
          return $string;             
    }

$str='해가 지기전에 가려했지, 너와 내가 있던 그언덕 풍경속에 아주 키작은 그 마음으로';

echo sub_string($str,0,10);
?>


 결과


해가 지기전에 가려..


LIST