BOARD

팁·활용

그누보드 문자열 글자 자르기 cutstr 함수 사용법과 버전별 적용 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 19회 작성일 26-09-29 15:14

본문

그누보드 문자열 글자 자르기 cut_str 함수 사용법과 버전별 적용 방법

그누보드 게시판 목록이나 여분 필드에서 긴 문자열을 지정한 길이만큼 자르고 말줄임표나 특정 문자를 표시하고 싶은 운영자·개발자를 위해, lib/common.lib.php에 정의된 cutstr 함수와 convsubject 함수의 구체적인 사용법과 버전에 따른 차이를 안내합니다.

그누보드 문자열 자르기 및 말줄임표 설정 방법

그누보드에서는 긴 문자열을 지정한 길이만큼 자르고 말줄임표나 특정 문자를 표시하기 위해 lib/common.lib.php 파일에 정의된 cut_str 함수와 conv_subject 함수를 제공합니다.

1. cut_str 함수 사용법

cut_str 함수는 첫 번째 인자에 자를 문자열 변수나 데이터, 두 번째 인자에 글자 수, 세 번째 인자에 대체 문자열(말줄임표 등)을 전달하여 사용합니다.

  • 기본 구조: cut_str($str, $len, $suffix)
    • $str: 자르고 싶은 대상 문자열(변수)
    • $len: 자를 글자 수 (띄어쓰기 포함)
    • $suffix: 지정한 글자 수를 초과할 경우 표시할 문자 (기본값은 …)
예시 코드 (여분필드 wr_1 출력 시)
  • 4글자만 자르고 기본 말줄임표(…) 출력
    <?php echo cut_str($list[$i]['wr_1'], 4);?>
  • 4글자만 자르고 별도 문자(``) 출력*
    <?php echo cut_str($list[$i]['wr_1'], 4, '***');?>
  • 4글자만 자르고 나머지 부분 생략(공백 처리)
    <?php echo cut_str($list[$i]['wr_1'], 4, '');?>

2. conv_subject 함수 활용

제목 등의 텍스트 변환 시 conv_subject 함수를 함께 사용할 수 있으며, 내부적으로 cut_str 기능을 포함하고 있습니다.

  • 사용 예시
    <?php echo conv_subject($list[$i]['wr_subject'], 글자수, "...");?>
    <?php echo conv_subject($wr_subject, 글자수, "...");?>

cut_str 함수 인자 설정 방법

그누보드의 cut_str 함수는 문자열을 지정한 길이만큼 자르고 말줄임표나 대체 문자열을 표시할 때 사용합니다. 함수 구조는 cut_str($str, $len, $suffix="…") 형태입니다.

인자 설명

  • 첫 번째 인자 ($str): 자르고 싶은 대상 문자열이나 변수를 입력합니다.
  • 두 번째 인자 ($len): 자를 글자 수를 숫자로 지정합니다. (띄어쓰기 포함)
  • 세 번째 인자 ($suffix): 잘린 나머지 글자 대신 표시할 대체 문자열을 지정합니다. 생략하면 기본값인 말줄임표(…)가 적용됩니다.

설정 예시

  • 기본 말줄임표 출력: <?php echo cut_str($변수, 4);?>
    • 4자로 자르고 나머지 부분은 기본값(…)으로 출력합니다.
  • 별도 문자열 지정 출력: <?php echo cut_str($변수, 4, '***');?>
    • 4자로 자르고 나머지는 지정한 별표(***)로 출력합니다.
  • 대체 문자 없이 생략: <?php echo cut_str($변수, 4, '');?>
    • 4자로 자르고 나머지 부분은 공백으로 처리하여 생략합니다.

그누보드4와 그누보드5의 cut_str 함수 차이 및 바이트 처리 방식

그누보드4와 그누보드5의 lib/common.lib.php에 정의된 cut_str 함수는 문자열을 지정된 길이만큼 자르고 말줄임표나 대체 문자를 붙여주는 사용자 정의 함수입니다. 두 버전은 내부 문자셋 처리 방식과 코드 구현에서 차이가 있습니다.

1. 그누보드4의 cut_str 함수 바이트 처리 방식

  • 파일 위치 및 기준: 그누보드4 (lib/common.lib.php의 대략 1357 ~ 1371 줄, 그누보드 4.37.38 기준)
  • 동작 방식: 사이트 인코딩 설정($g4['charset'])에 따라 다르게 분기합니다.
    • UTF-8 환경: 유니코드 바이트 구조를 직접 판별하여 글자를 자릅니다. strtoupper($g4['charset']) == 'UTF-8' 조건 하에 비트 연산을 통해 한글(유니코드 3바이트 등)과 영문·숫자·공란·특수문자(길이 1)의 바이트 경계를 맞추어 잘라냅니다.
    • EUC-KR 환경: 문자열을 $len만큼 자른 후, 잘린 문자열 내에 포함된 127보다 큰 바이트(ord($s[$i]) > 127)의 개수를 세어 홀수 개가 될 경우 글자가 깨지지 않도록 바이트 조정을 거칩니다.

2. 그누보드5의 cut_str 함수 바이트 처리 방식

  • 파일 위치 및 기준: 그누보드5 (lib/common.lib.php의 대략 1380 ~ 1394 줄, 그누보드 5.3.1.4 기준)
  • 동작 방식: 정규식과 배열 함수를 활용하여 글자 수 단위로 처리합니다.
    • preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);를 사용하여 유니코드 문자 단위로 배열에 나눕니다.
    • 글자 수($len)와 배열의 전체 길이($str_len)를 비교하여 지정된 글자 수 이상일 경우 array_slice로 잘라낸 뒤 $suffix를 붙입니다.
    • 바이트 기반의 비트 연산 대신 PHP의 유니코드 정규식(//u)을 활용해 글자 수 기준으로 안전하게 처리합니다.

HTML 태그 포함 문자열 처리 시 주의사항

그누보드의 cut_str 함수는 문자열의 길이를 기준으로 자르는 함수입니다. 만약 HTML 태그가 포함된 문자열에 cut_str을 직접 적용하면, 태그의 일부가 잘리면서 레이아웃이 깨지거나 의도치 않은 디자인 오류가 발생할 수 있습니다. 이를 방지하기 위해 다음 방법을 권장합니다.

1. strip_tags() 함수 사용

문자열을 자르기 전에 strip_tags() 함수를 사용하여 HTML 태그를 먼저 제거하면 태그가 잘리는 문제를 방지할 수 있습니다.

  • 예시: <?php echo cut_str(strip_tags($view['wr_subject']), 50);?>

2. get_text() 함수 활용

그누보드에서 제공하는 get_text() 함수를 함께 사용하면 HTML 특수문자 처리 및 텍스트 변환을 거친 후 안전하게 자를 수 있습니다.

  • 예시: <?php echo cut_str(get_text($view['wr_subject']), 70);?>

3. 스킨 파일 적용 시 참고

view.skin.php와 같은 스킨 파일에서 제목이나 본문을 출력할 때, 태그가 포함된 변수를 그대로 자르지 않도록 주의해야 합니다. 위와 같이 태그를 제거하거나 텍스트화하는 과정을 거친 뒤 cut_str을 적용하는 것이 안정적입니다.

상황별 판단 및 행동 가이드

내 상황우선할 판단다음 행동
게시판 목록이나 여분필드(wr_1) 등에서 긴 문자열을 지정된 글자 수로 줄이고 싶음lib/common.lib.php에 정의된 사용자 정의 함수 cut_str 활용 가능 여부 확인<?php echo cut_str($변수, 글자수, '말줄임문자');?> 코드를 스킨 파일에 적용
HTML 태그가 포함된 제목이나 본문 텍스트를 자를 때 레이아웃 깨짐 방지가 필요함태그 일부가 잘려 디자인 오류가 발생하는지 점검cut_str 적용 전 strip_tags() 또는 get_text() 함수를 함께 조합하여 처리

실전 FAQ

Q. 띄어쓰기나 특수문자도 글자 수에 포함되나요?

  • 예외 및 대안: 네, cut_str 함수는 띄어쓰기를 포함하여 글자 수를 계산합니다. 공백, 영숫자, 특수문자는 길이 1로 취급되며, 한글의 경우 그누보드 버전 및 문자셋(UTF-8/EUC-KR)에 따라 바이트 및 유니코드 단위 처리 방식에 차이가 있을 수 있으므로 실제 출력 결과를 확인해야 합니다.

Q. cut_str 함수 사용 시 페이지가 멈추거나 에러가 발생하면 어떻게 하나요?

  • 예외 및 대안: cut_str과 conv_subject는 그누보드 내부 파일(lib/common.lib.php)에 정의된 사용자 정의 함수입니다. 그누보드 환경이 아닌 외부 페이지나 함수 파일이 누락된 곳에서 호출하면 오류가 발생할 수 있으므로, 해당 라이브러리 파일이 정상적으로 include 되었는지 확인해야 합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.