BOARD

자료·레퍼런스

PHP 문자열 대소문자 변환 함수 총정리 (strtolower, strtoupper, mb 함수)

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 6회 작성일 26-10-11 16:15

본문

PHP 문자열 대소문자 변환 함수 총정리 (strtolower, strtoupper, mb_ 함수)

그누보드 기능 개발이나 소스 코드 수정 시 PHP에서 문자열을 대문자 또는 소문자로 변환해야 할 때 유용한 내장 함수들의 사용법을 확인합니다.

PHP 문자열 대소문자 변환 함수

PHP에서 문자열을 모두 소문자 또는 대문자로 변환하려면 표준 내장 함수인 strtolower()와 strtoupper()를 사용할 수 있습니다.

1. strtolower() - 소문자 변환

모든 문자열을 소문자로 변환하는 함수입니다 (PHP 4, PHP 5 지원).

  • 구문: string strtolower(string $str)
  • 예제 코드:
<?php
$str = "To be, or Not To be, That is the Question";
$str = strtolower($str);
print_r("결과: ".$str);
?>
  • 출력 결과: 결과: to be, or not to be, that is the question

2. strtoupper() - 대문자 변환

모든 문자열을 대문자로 변환하는 함수입니다 (PHP 4, PHP 5 지원).

  • 구문: string strtoupper( string $string )
  • 예제 코드:
<?php
$str = "To be, or Not To be, That is the Question";
$str = strtoupper($str);
print_r("결과: ".$str);
?>
  • 출력 결과: 결과: TO BE, OR NOT TO BE, THAT IS THE QUESTION

한글이나 다국어가 포함된 문자열에서 일반 strtolower()나 strtoupper() 함수를 사용하면 멀티바이트 문자를 올바르게 처리하지 못해 글자가 깨지거나 정상적으로 변환되지 않을 수 있습니다. 이러한 문제를 방지하려면 멀티바이트(Multibyte)를 지원하는 mb_strtolower()와 mb_strtoupper() 함수를 사용해야 합니다.

1. 멀티바이트 함수 사용의 필요성

PHP에서 한글과 같은 멀티바이트 문자가 포함된 문자열을 처리할 때, 일반 함수는 바이트 단위로 처리하여 글자 깨짐 현상이 발생할 수 있습니다. 이를 해결하기 위해 mb_ 접두사가 붙은 함수를 사용하며, 인코딩 방식을 명시적으로 지정할 수 있습니다.

2. 주요 함수 및 사용법

  • mb_strtolower($str, $encoding): 문자열을 소문자로 변환합니다.
  • mb_strtoupper($str, $encoding): 문자열을 대문자로 변환합니다.

예시 코드 (UTF-8 기준):

// 소문자 변환
$lower = mb_strtolower('한글 TEST', 'UTF-8');

// 대문자 변환
$upper = mb_strtoupper('한글 test', 'UTF-8');

다국어 환경에서 문자열을 비교하거나 정규화할 때는 인코딩 누락으로 인한 오류를 방지하기 위해 반드시 UTF-8과 같은 인코딩 매개변수를 함께 명시하여 사용하는 것이 권장됩니다.

PHP mbconvertcase 함수를 활용한 대소문자 유연 변환 방법

문자열 전체 변환 외에 단어의 첫 글자만 대문자로 바꾸거나 대소문자를 유연하게 전환하려면 mb_convert_case 함수를 사용할 수 있습니다. 이 함수는 멀티바이트 문자열을 지원하며 모드에 따라 대소문자 변환 방식을 지정할 수 있습니다.

구문

string mb_convert_case(string $str, int $mode = MB_CASE_UPPER [, string $encoding = mb_internal_encoding()])

변환 모드($mode)

  • MB_CASE_UPPER: 문자열을 대문자로 변환합니다.
  • MB_CASE_LOWER: 문자열을 소문자로 변환합니다.
  • MB_CASE_TITLE: 단어별 첫 번째 문자를 대문자로 변환합니다.

예제 코드

  • 단어 첫 글자만 대문자로 변환 (MB_CASE_TITLE)
    <?php
    $str = "TO BE, OR NOT TO BE, THAT IS THE QUESTION";
    $str = mb_convert_case($str, MB_CASE_TITLE, 'UTF-8');
    print_r("결과: ".$str);
    ?>
    결과: To Be, Or Not To Be, That Is The Question

상황별 대소문자 변환 함수 선택 가이드

운영 중인 그누보드 환경이나 PHP 소스 코드 수정 시 아래 기준에 따라 함수를 선택하십시오.

  1. 영문 알파벳만 처리할 때: strtolower()(소문자) 또는 strtoupper()(대문자)를 사용합니다. 가장 빠르고 표준적인 방법입니다.
  2. 한글 및 다국어(UTF-8) 문자가 포함된 경우: mb_strtolower() 또는 mb_strtoupper()를 사용합니다. 인코딩 매개변수에 'UTF-8'을 반드시 지정하여 글자 깨짐을 방지하십시오.
  3. 단어 첫 글자 대문자 등 유연한 변환이 필요할 때: mb_convert_case()를 사용합니다. 모드(MB_CASE_TITLE 등)를 지정하여 원하는 서식으로 변환하십시오.

다음 행동:

  1. 위 기준에 따라 함수를 선택합니다.
  2. 소스 코드에 적용하기 전, var_dump()를 사용하여 변환 결과가 의도한 대로 나오는지 테스트합니다.
  3. 그누보드 관리자 페이지 등에서 특정 기능을 수정하는 경우, 수정 전 반드시 해당 파일(adm/ 경로 등)을 백업하십시오.

실전 FAQ

Q. 영문 이메일 주소를 데이터베이스에 저장하기 전 소문자로 통일할 때 어떤 함수를 써야 하나요?

  • 답변: 이메일 주소는 영문과 기호로 구성되므로 strtolower()를 사용해도 충분합니다. 다만, 다국어 도메인 등을 고려한다면 mb_strtolower($email, 'UTF-8')를 사용하는 것이 더 안전합니다.

Q. mb_convert_case 사용 시 인코딩 파라미터를 생략하면 어떻게 되나요?

  • 답변: 인코딩을 생략하면 PHP의 mb_internal_encoding() 설정값을 따릅니다. 서버 환경에 따라 기본값이 다를 수 있으므로, UTF-8 환경이라면 'UTF-8'을 명시적으로 지정하는 것이 오류를 방지하는 대안입니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.