그누보드 [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 이면
{
// & 처리 : & 등의 코드를 정상 출력함
$content = html_symbol($content);
// 공백 처리
//$content = preg_replace("/ /", " ", $content);
$content = str_replace(" ", " ", $content);
$content = str_replace("\n ", "\n ", $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;
}
}
사용법은 다음과 같습니다.
<?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 이면
{
// & 처리 : & 등의 코드를 정상 출력함
$content = html_symbol($content);
// 공백 처리
//$content = preg_replace("/ /", " ", $content);
$content = str_replace(" ", " ", $content);
$content = str_replace("\n ", "\n ", $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;
}
}
댓글목록
등록된 댓글이 없습니다.