PHP 문자열을 원하는 길이(글자수)에서 끊어(자르기) 말줄임표로 보이기
페이지 정보
본문
1. php 기본 함수 사용하기
<?php
include "dbconn.php";
$query = "select * from hanatv_movie order by no asc limit 2";
$result = mysql_query($query, $dbconn);
while($data = mysql_fetch_array($result)){
$string = $data['memo']; // 대상 내용
$lenstr = 71; // 나타낼 글자수
$sub_string = substr($string, 0, $lenstr, 'utf-8');
$string_len = strlen($string); // 대상 글자수를 계산
for($k=0; $k<$lenstr-1; $k++) {
if(ord(substr($string_len, $k, 1, 'utf-8'))>0) $k++;
}
if ($string_len > $lenstr) {
$string_text=substr($sub_string, 0, $k, 'utf-8')."...";
// $sub_string = $string_text;
}
else {
$string_text=$string_len;
// $sub_string = stripslashes($string_text);
}
?>
<?php echo $string_text; ?>
<?php
}
?>
2. 함수를 만들어서 사용하기
<?php
if (!function_exists('simpl_str')) {
function simpl_str($string,$limit_length) {
$string_length = strlen( $string );
if ( $limit_length <= $string_length ) {
$string = substr( $string, 0, $limit_length, 'utf-8' )."...";
$han_char = 0;
for ( $i = $limit_length-1; $i>=0; $i-- ) {
$lastword = ord( substr( $string, $i, 1, 'utf-8' ) );
if ( 127 > $lastword ) break;
else $han_char++;
}
if ( $han_char%2 == 1 ) $string = substr( $string, 0, $limit_length-1, 'utf-8' ) . "...";
}
return $string;
}
}
?>
사용법 : <?php echo simpl_str($data['title'],7); ?>
해 설 : $data['title'] 을 7자에서 끊어서 그 후의 글자는 ... 으로 보입니다.
3. 바이트로 글자 자르기 (2010-02-03 추가)
<?php
// 글자 자르기(UTF-8 등의 바이트단위로 잘라야 하는 경우.)
if (!function_exists('str_cutting')) {
function str_cutting($string, $len){
if(strlen($string)<$len) {
return $string; //자를길이보다 문자열이 작으면 그냥 리턴
}
else {
$string = substr($string, 0, $len);
$cnt = 0;
for ($i=0; $i<strlen($string); $i++)
if (ord($string[$i]) > 127) $cnt++; //한글일 경우 2byte 옮김,자릿수
$string = substr($string, 0, $len - ($cnt % 3));
$string.="..."; //커팅된 문자열에 꼬리부분을 붙여서 리턴
return $string;
}
}
}
$str ="오늘은 기분좋은하루입니다";
echo $sbj = str_cutting($str,23);
?>
- 출력결과
오늘은 기분좋은...
4. 그누보드5 사용시
그누보드5/lib/common.lib.php 에 아래 함수가 추가되었습니다.
<?php
// UTF-8 문자열 자르기
// 출처 : https://www.google.co.kr/search?q=utf8_strcut&aq=f&oq=utf8_strcut&aqs=chrome.0.57j0l3.826j0&sourceid=chrome&ie=UTF-8
function utf8_strcut( $str, $size, $suffix='...' )
{
if( function_exists('mb_strlen') && function_exists('mb_substr') ){
if(mb_strlen($str)<=$size) {
return $str;
} else {
$str = mb_substr($str, 0, $size, 'utf-8');
$str .= $suffix;
}
} else {
$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 .= $suffix;
}
}
return $str;
}
$str ="오늘은 기분좋은하루입니다";
echo utf8_strcut($str, 23);
?>
- 출력결과
오늘은 기분좋은...
참고자료
http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040203&docId=69646273
http://deuxism.tistory.com/43
댓글목록
등록된 댓글이 없습니다.