BOARD

자료·레퍼런스

ASP Left/Right 함수를 PHP substr로 구현하는 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 16회 작성일 26-09-30 16:50

본문

ASP Left/Right 함수를 PHP substr로 구현하는 방법

ASP의 Left, Right 함수 기능을 PHP에서 substr() 함수와 사용자 정의 함수로 구현하는 방법과 문자셋별 주의사항을 확인합니다.

PHP substr() 함수로 ASP Left/Right 함수 구현하기

PHP에는 ASP와 같은 내장 left(), right() 함수가 없으므로 substr() 함수를 활용하여 구현할 수 있습니다. ASP와 PHP는 문자열 인덱스 시작 기준이 다르므로(ASP는 1, PHP는 0) 사용 시 주의가 필요합니다.

substr() 파라미터 활용 예시

  • Left 함수 효과: substr($string, 0, $length)를 사용하여 문자열의 처음부터 지정한 길이만큼 추출합니다.
  • Right 함수 효과: substr($string, -$length)와 같이 음수 파라미터를 사용하여 문자열의 끝에서부터 지정한 길이만큼 추출합니다.
  • Mid 함수 효과: substr($string, $start, $length)를 사용하여 시작 위치와 길이를 지정해 추출합니다.

사용자 정의 함수 구현은 Q2에서 다룹니다.

한글 처리 시 주의사항

substr()은 바이트 단위로 동작하므로, 한글이 포함된 문자열을 자를 경우 글자가 깨질 수 있습니다. 한글을 포함한 멀티바이트 문자열을 다룰 때는 mb_substr() 함수를 사용하는 것이 권장됩니다.

PHP 사용자 정의 함수(left, right) 작성 방법

ASP의 내장 함수인 left(), right()와 유사한 인터페이스를 PHP에서 제공하려면 substr() 함수와 문자열 길이를 반환하는 strlen() 함수를 조합하여 사용자 정의 함수(function)로 구현할 수 있습니다.

사용자 정의 함수 예시

function left($string, $count) {
 return substr($string, 0, $count);
}

function right($value, $count) {
 return substr($value, (strlen($value) - $count), strlen($value));
}

주의 사항

  • 인덱스 차이: PHP의 substr()은 문자열의 첫 주소를 0으로 시작하므로, 1부터 시작하는 ASP와 차이가 있습니다.
  • 멀티바이트 문자 처리: 위 함수는 바이트 단위로 동작하므로 한글과 같은 멀티바이트 문자를 처리할 때 글자가 깨질 수 있습니다. 한글을 포함한 문자열을 정확히 자르려면 mb_substr() 함수를 사용하는 것이 권장됩니다(Q3 참조).
  • 호환성: 특정 PHP 버전 언급이 없으므로 최신 버전에서의 호환성은 직접 테스트가 필요합니다.

PHP 한글 문자열 자르기 깨짐 현상 해결 방법

PHP의 기본 substr() 함수는 바이트 단위로 문자열을 자르기 때문에, UTF-8이나 EUC-KR 같은 멀티바이트 환경에서 2바이트 또는 3바이트로 표현되는 한글의 중간 바이트를 자르게 되면 글자가 깨지는 현상이 발생합니다.

mb_substr() 함수 사용

멀티바이트 문자열을 정확한 문자 단위로 자르려면 mb_substr() 함수를 사용해야 합니다.

mb_substr($str, $start_Pos, $length, $encoding);
  • $str: 자를 원본 문자열
  • $start_Pos: 시작 위치 (첫 글자는 0부터 시작)
  • $length: 가져올 글자 수
  • $encoding: 인코딩 형식 ('UTF-8', 'EUC-KR' 등 지정)

사용 예시

// UTF-8 환경에서 안전하게 글자 자르기
$str = "반갑습니다. 환영합니다.";
$result = mb_substr($str, 0, 5, 'UTF-8');
echo $result;

주의 사항 및 다음 행동

  • mb_substr() 사용 시 Call to undefined function mb_substr() 오류가 발생한다면 서버에 mbstring 확장 모듈이 설치 및 활성화되어 있는지 확인해야 합니다.
  • 리눅스 환경 등에서는 서버 패키지에 맞는 php-mbstring 패키지 설치가 필요할 수 있습니다.

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.