[G4/G5] 문자열을 원하는 길이(글자수)에서 끊어(자르기) 말줄임표로 보이기 > 기술자료 | 해피정닷컴

[G4/G5] 문자열을 원하는 길이(글자수)에서 끊어(자르기) 말줄임표로 보이기 > 기술자료

본문 바로가기

사이트 내 전체검색

[G4/G5] 문자열을 원하는 길이(글자수)에서 끊어(자르기) 말줄임표로 보이기 > 기술자료

그누보드 [G4/G5] 문자열을 원하는 길이(글자수)에서 끊어(자르기) 말줄임표로 보이기

페이지 정보


본문

그누보드에서는 글 줄여서 보이는 함수가 준비되어 있습니다.

사용법은 다음과 같습니다.

<?php echo conv_subject($list[$i]['wr_subject'], 글자수, "..."); ?>
<?php echo conv_subject($wr_subject, 글자수, "..."); ?>
<?php echo cut_str("문자열", 글자수); ?>
<?php echo cut_str(strip_tags("문자열"),글자수); ?>



1. 그누보드4 / lib / common.lib.php

// 418 ~ 421 줄 (그누보드 4.37.38 기준)
// 제목을 변환
function conv_subject($subject, $len, $suffix="")
{
    return cut_str(get_text($subject), $len, $suffix);
}


// 1357 ~ 1371 줄 (그누보드 4.37.38 기준)
// 한글 한글자(2byte, 유니코드 3byte)는 길이 2, 공란.영숫자.특수문자는 길이 1
// 유니코드는 http://g4uni.winnwe.net/bbs/board.php?bo_table=g4uni_faq&wr_id=7 의 Mr.Learn님의 글을 참고하였습니다.
function cut_str($str, $len, $suffix="…")
{
    global $g4;

    if (strtoupper($g4['charset']) == 'UTF-8') {
        $c = substr(str_pad(decbin(ord($str{$len})),8,'0',STR_PAD_LEFT),0,2); 
        if ($c == '10') 
            for (;$c != '11' && $c{0} == 1;$c = substr(str_pad(decbin(ord($str{--$len})),8,'0',STR_PAD_LEFT),0,2)); 
        return substr($str,0,$len) . (strlen($str)-strlen($suffix) >= $len ? $suffix : ''); 
    } else {
        $s = substr($str, 0, $len);
        $cnt = 0;
        for ($i=0; $i<strlen($s); $i++)
            if (ord($s[$i]) > 127)
                $cnt++;
        $s = substr($s, 0, $len - ($cnt % 2));
        if (strlen($s) >= strlen($str))
            $suffix = "";
        return $s . $suffix;
    }
}



2. 그누보드5 / lib / common.lib.php

// 505 ~ 556 줄 (그누보드 5.3.1.4 기준)
// 제목을 변환
function conv_subject($subject, $len, $suffix='')
{
    return get_text(cut_str($subject, $len, $suffix));
}

// 내용을 변환
function conv_content($content, $html, $filter=true)
{
    global $config, $board;

    if ($html)
    {
        $source = array();
        $target = array();

        $source[] = "//";
        $target[] = "";

        if ($html == 2) { // 자동 줄바꿈
            $source[] = "/\n/";
            $target[] = "<br/>";
        }

        // 테이블 태그의 개수를 세어 테이블이 깨지지 않도록 한다.
        $table_begin_count = substr_count(strtolower($content), "<table");
        $table_end_count = substr_count(strtolower($content), "</table");
        for ($i=$table_end_count; $i<$table_begin_count; $i++)
        {
            $content .= "</table>";
        }

        $content = preg_replace($source, $target, $content);

        if($filter)
            $content = html_purifier($content);
    }
    else // text 이면
    {
        // & 처리 : &amp; &nbsp; 등의 코드를 정상 출력함
        $content = html_symbol($content);

        // 공백 처리
        //$content = preg_replace("/  /", "&nbsp; ", $content);
        $content = str_replace("  ", "&nbsp; ", $content);
        $content = str_replace("\n ", "\n&nbsp;", $content);

        $content = get_text($content, 1);
        $content = url_auto_link($content);
    }

    return $content;
}


// 1380 ~ 1394 줄 (그누보드 5.3.1.4 기준)
function cut_str($str, $len, $suffix="…")
{
    $arr_str = preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
    $str_len = count($arr_str);

    if ($str_len >= $len) {
        $slice_str = array_slice($arr_str, 0, $len);
        $str = join("", $slice_str);

        return $str . ($str_len > $len ? $suffix : '');
    } else {
        $str = join("", $arr_str);
        return $str;
    }
}
 

댓글목록

등록된 댓글이 없습니다.


Total 459건 16 페이지
  • RSS
기술자료 목록
159
그누보드   16590  2013-01-16 16:19  
158
그누보드   14996  2012-12-26 22:06 ~ 2024-01-12 08:17  
157
그누보드   12617  2012-12-24 13:51  
156
그누보드   19800  2012-12-03 08:27  
155
그누보드   16405  2012-11-30 00:46  
154
그누보드   16279  2012-11-10 14:38 ~ 2017-01-21 00:00  
153
그누보드   15005  2012-11-08 04:05  
152
그누보드   11684  2012-11-07 22:01  
151
그누보드   13735  2012-11-05 02:06  
150
그누보드   11622  2012-11-04 18:20  
열람
그누보드   17845  2012-11-03 04:22 ~ 2018-12-18 02:42  
148
그누보드   10686  2012-11-02 23:18  
147
그누보드   11282  2012-11-01 22:20  
146
그누보드   13240  2012-10-30 22:59  
145
그누보드   12076  2012-10-29 23:37  
144
그누보드   13408  2012-10-29 23:09  
143
그누보드   12683  2012-10-29 21:09  
142
그누보드   13717  2012-10-26 06:49  
141
그누보드   13491  2012-10-25 17:05 ~ 2020-10-15 13:42  
140
그누보드   12749  2012-10-18 14:20 ~ 2014-12-11 00:00  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.