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 소스 코드 수정 시 아래 기준에 따라 함수를 선택하십시오.
- 영문 알파벳만 처리할 때:
strtolower()(소문자) 또는strtoupper()(대문자)를 사용합니다. 가장 빠르고 표준적인 방법입니다. - 한글 및 다국어(UTF-8) 문자가 포함된 경우:
mb_strtolower()또는mb_strtoupper()를 사용합니다. 인코딩 매개변수에 'UTF-8'을 반드시 지정하여 글자 깨짐을 방지하십시오. - 단어 첫 글자 대문자 등 유연한 변환이 필요할 때:
mb_convert_case()를 사용합니다. 모드(MB_CASE_TITLE등)를 지정하여 원하는 서식으로 변환하십시오.
다음 행동:
- 위 기준에 따라 함수를 선택합니다.
- 소스 코드에 적용하기 전,
var_dump()를 사용하여 변환 결과가 의도한 대로 나오는지 테스트합니다. - 그누보드 관리자 페이지 등에서 특정 기능을 수정하는 경우, 수정 전 반드시 해당 파일(
adm/경로 등)을 백업하십시오.
실전 FAQ
Q. 영문 이메일 주소를 데이터베이스에 저장하기 전 소문자로 통일할 때 어떤 함수를 써야 하나요?
- 답변: 이메일 주소는 영문과 기호로 구성되므로
strtolower()를 사용해도 충분합니다. 다만, 다국어 도메인 등을 고려한다면mb_strtolower($email, 'UTF-8')를 사용하는 것이 더 안전합니다.
Q. mb_convert_case 사용 시 인코딩 파라미터를 생략하면 어떻게 되나요?
- 답변: 인코딩을 생략하면 PHP의
mb_internal_encoding()설정값을 따릅니다. 서버 환경에 따라 기본값이 다를 수 있으므로, UTF-8 환경이라면'UTF-8'을 명시적으로 지정하는 것이 오류를 방지하는 대안입니다.
함께 보면 좋은 글
참고자료
기타 참고자료
- 이전글PHP 환경에서 MySQL 및 MariaDB 테이블 생성 방법 (MySQLi 및 PDO) 26.10.11
- 다음글그누보드 버전 및 테마 이름 확인 방법 26.10.11
댓글목록
등록된 댓글이 없습니다.