PHP에서 문자열을 처리할 때, 대문자를 소문자로 변환해야 하는 경우가 많습니다.
예를 들어, 사용자 입력값을 정규화(검색 및 비교), 이메일 주소 소문자 변환, URL 슬러그 처리 등에 사용됩니다.
이러한 기능을 수행하는 대표적인 함수가 바로 strtolower() 입니다.
이 글에서는 PHP strtolower() 함수의 사용법, 다양한 활용 예제, strtoupper() 및 mb_strtolower()와의 차이점, 유용한 팁과 주의사항을 체계적으로 정리하겠습니다.
1. strtolower() 함수란?
✅ 기본 문법
string strtolower(string $string)
✅ 매개변수 설명
매개변수 설명
$string | 소문자로 변환할 문자열 |
✅ 반환값
- 입력된 문자열을 모두 소문자로 변환하여 반환
2. strtolower() 기본 예제
🔹 문자열을 소문자로 변환
<?php
$text = "Hello PHP!";
echo strtolower($text);
?>
🔹 실행 결과
hello php!
➡ 모든 알파벳이 소문자로 변환됨.
🔹 대문자만 포함된 문자열 변환
<?php
$text = "WELCOME TO PHP!";
echo strtolower($text);
?>
🔹 실행 결과
welcome to php!
➡ 모든 문자가 소문자로 변환됨.
🔹 혼합된 문자열 변환
<?php
$text = "Php Is AwEsOmE!";
echo strtolower($text);
?>
🔹 실행 결과
php is awesome!
➡ 모든 대문자가 소문자로 변환됨.
3. strtolower()의 실용적인 활용 예제
🔹 1) 사용자 입력값 정규화 (검색 비교)
<?php
$searchInput = "Apple";
$data = ["apple", "banana", "cherry"];
if (in_array(strtolower($searchInput), array_map("strtolower", $data))) {
echo "✅ 검색어와 일치하는 항목이 있습니다.";
} else {
echo "❌ 검색 결과가 없습니다.";
}
?>
➡ 대소문자 구분 없이 검색 가능.
🔹 2) 이메일 주소 소문자 변환
<?php
$email = "UserName@Example.com";
$normalizedEmail = strtolower($email);
echo $normalizedEmail;
?>
🔹 실행 결과
username@example.com
➡ 이메일 비교 시 대소문자를 구분하지 않도록 변환 가능.
🔹 3) URL 슬러그 생성
<?php
$title = "Hello World! PHP is Great.";
$slug = strtolower(str_replace(" ", "-", $title));
echo $slug;
?>
🔹 실행 결과
hello-world!-php-is-great.
➡ URL 친화적인 슬러그(slug) 생성 가능.
🔹 4) 배열 내 모든 요소를 소문자로 변환
<?php
$words = ["PHP", "JAVASCRIPT", "HTML"];
$lowercaseWords = array_map("strtolower", $words);
print_r($lowercaseWords);
?>
🔹 실행 결과
Array
(
[0] => php
[1] => javascript
[2] => html
)
➡ 배열 내 모든 요소를 소문자로 변환 가능.
4. strtolower() vs strtoupper() vs mb_strtolower() 차이점
함수 설명
strtolower() | 영문 대문자를 소문자로 변환 |
strtoupper() | 소문자를 대문자로 변환 |
mb_strtolower() | 멀티바이트(UTF-8) 문자열까지 변환 가능 (한글, 일본어 등) |
✅ 예제: strtolower() vs strtoupper()
<?php
$text = "Hello PHP!";
echo strtolower($text); // hello php!
echo strtoupper($text); // HELLO PHP!
?>
➡ strtolower()는 소문자로 변환, strtoupper()는 대문자로 변환.
✅ 한글, 일본어, 중국어 등 멀티바이트 문자열 변환 (mb_strtolower())
<?php
$text = "안녕하세요 PHP!";
echo mb_strtolower($text, "UTF-8"); // 정상 동작
?>
➡ strtolower()는 영어 알파벳만 변환 가능.
➡ 한글 등 멀티바이트 문자는 mb_strtolower() 사용해야 정상 변환.
5. strtolower() 사용 시 주의할 점
✅ 한글, 일본어, 중국어 등 다국어 변환 시 mb_strtolower() 사용
<?php
$text = "안녕하세요";
echo strtolower($text); // 변환되지 않음
echo mb_strtolower($text, "UTF-8"); // 정상 변환
?>
➡ strtolower()는 영어 알파벳 이외의 문자 변환 불가.
✅ 배열 내 모든 문자열 변환 시 array_map() 사용
<?php
$words = ["HELLO", "WORLD"];
$lowercaseWords = array_map("strtolower", $words);
print_r($lowercaseWords);
?>
➡ 배열 요소 하나씩 변환하려면 array_map() 활용.
✅ HTML 태그 속성 값 변환 시 주의
<?php
$html = '<A HREF="PAGE.HTML">LINK</A>';
echo strtolower($html); // '<a href="page.html">link</a>'가 아님!
?>
➡ strtolower()는 HTML 태그를 변환하지 않음.
✅ MySQL LOWER() 함수와 유사
SELECT LOWER(name) FROM users;
➡ PHP의 strtolower()는 MySQL의 LOWER() 함수와 동일한 기능.
6. strtolower() 활용 팁
✅ 사용자 입력을 통일하여 비교
<?php
$input = "Hello";
$storedValue = "hello";
if (strtolower($input) === strtolower($storedValue)) {
echo "같은 문자열입니다.";
}
?>
➡ 대소문자 구분 없이 비교 가능.
✅ 파일 확장자 비교
<?php
$filename = "document.PDF";
if (strtolower(pathinfo($filename, PATHINFO_EXTENSION)) === "pdf") {
echo "PDF 파일입니다.";
}
?>
➡ 파일 확장자를 비교할 때 대소문자 차이를 무시 가능.
✅ 배열에서 특정 값 찾기
<?php
$colors = ["Red", "Blue", "Green"];
$search = "blue";
if (in_array(strtolower($search), array_map("strtolower", $colors))) {
echo "컬러가 존재합니다.";
}
?>
➡ 대소문자 구분 없이 배열 내 값 검색 가능.
✅ 사용자 이름 정리
<?php
$username = "UserName";
$normalizedUsername = strtolower($username);
?>
➡ 사용자 이름을 정규화하여 저장 가능.
7. 결론
PHP의 strtolower() 함수는 문자열을 소문자로 변환하는 필수적인 함수입니다.
이를 활용하면 사용자 입력 정규화, 파일 확장자 비교, 이메일 정리, 검색어 통일, URL 슬러그 생성 등 다양한 작업을 수행할 수 있습니다.
📌 핵심 요약
✔️ strtolower()는 문자열의 모든 알파벳을 소문자로 변환
✔️ 배열 내 모든 값 변환은 array_map("strtolower", $array) 사용
✔️ 한글 등 다국어 문자열은 mb_strtolower() 사용
✔️ 검색, 비교, 파일 처리 등 다양한 작업에서 활용 가능
이제 strtolower()를 활용하여 더욱 효율적인 PHP 개발을 해보세요!
'💻 자주 쓰는 PHP 함수' 카테고리의 다른 글
[PHP 함수] strtotime() 함수로 날짜를 타임스탬프로 변환 (14) | 2025.03.29 |
---|---|
[PHP 함수] time() 함수 사용하기 (14) | 2025.03.28 |
[PHP 함수] json_encode() 함수로 json으로 변환하기 (26) | 2025.03.27 |
[PHP 함수] json_decode() 함수로 Json을 배열로 변환 (6) | 2025.03.27 |
[PHP 함수] preg_match() 함수로 패턴 검사하기 (10) | 2025.03.26 |