웹싸이트를 제작하다보면, 긴 문장의 글을 잘라야 할때가 있다. 하지만, 한글과 영문이 서로 다르게 잘리게 되어 상당히 골치 아플때가있다. 이럴때 쓰는 함수가 있다. 바로 아래와 같은 함수이다. 인자값들을 보면 문자, 시작위치, 자를길이, 문자 인코딩 의 값을 받는다.
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이 나오게 된다. 이함수의 인자값들을 보면 문자, 문자 인코딩 의 값을 받는다.
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); ?>
결과
해가 지기전에 가려..
'웹프로그래밍 > PHP 일반' 카테고리의 다른 글
PHP 에서 메일검사(유효성) 정규식 과 함수 (872) | 2015.03.07 |
---|---|
PHP로 간단한 로또 시스템 만들기 (550) | 2015.03.07 |
PHP에서 이미지의 URL 노출과 다운로드를 막아보자 (2390) | 2015.03.07 |
PHP의 isset 함수와 empty 함수 (1658) | 2015.03.07 |
PHP오류 : Only variable references should be returned by reference (1304) | 2015.03.07 |