PHP에서 문자열을 다룰 때 문자열의 길이를 구하는 기능이 필요할 때가 많습니다.
예를 들면, 사용자가 입력한 비밀번호 길이 검증, 데이터베이스 저장 시 문자열 길이 제한 확인, 특정 조건에 맞는 문자열 출력 등 다양한 작업에서 사용됩니다.
이러한 기능을 수행하는 대표적인 함수가 바로 strlen() 입니다.
이 글에서는 PHP strlen() 함수의 사용법, 다양한 활용 예제, 유용한 팁과 주의사항을 체계적으로 정리하겠습니다.
1. strlen() 함수란?
✅ 기본 문법
int strlen(string $string)
✅ 매개변수 설명
매개변수 설명
$string | 길이를 구할 문자열 |
✅ 반환값
- 문자열의 길이(바이트 단위)를 반환
- PHP는 기본적으로 1문자 = 1바이트로 계산
2. strlen() 기본 예제
🔹 문자열 길이 구하기
<?php
$text = "Hello, PHP!";
echo strlen($text);
?>
🔹 실행 결과
12
➡ "Hello, PHP!"는 공백과 쉼표까지 포함하여 12개의 문자로 구성됨.
🔹 빈 문자열의 길이
<?php
echo strlen(""); // 0
?>
➡ 빈 문자열("")은 길이가 0입니다.
🔹 숫자(정수, 실수)와 strlen()
<?php
echo strlen(12345); // 5
echo strlen(12.34); // 5 (소수점 포함)
?>
➡ 숫자를 문자열로 변환한 후 길이를 측정하므로, 12.34는 5자("12.34")로 인식됨.
🔹 null 값과 strlen()
<?php
echo strlen(null); // 0
?>
➡ null은 빈 문자열("")로 변환되므로 길이가 0.
3. 한글(UTF-8) 문자열 처리 (mb_strlen() 사용)
🔹 strlen()은 한글을 올바르게 측정하지 못함
<?php
$text = "안녕하세요";
echo strlen($text);
?>
🔹 실행 결과
15
➡ strlen()은 UTF-8에서 한글 1글자를 3바이트로 인식하여, "안녕하세요"(5글자)가 15로 출력됨.
🔹 mb_strlen()을 사용하여 올바른 문자 개수 구하기
<?php
echo mb_strlen("안녕하세요", "UTF-8"); // 5
?>
➡ mb_strlen()은 UTF-8 환경에서 정확한 문자 개수를 반환.
4. strlen()의 실용적인 활용 예제
🔹 1) 비밀번호 길이 검증
<?php
$password = "mypassword";
if (strlen($password) < 8) {
echo "비밀번호는 최소 8자 이상이어야 합니다.";
} else {
echo "비밀번호 설정이 완료되었습니다.";
}
?>
➡ 비밀번호가 8자 이상인지 확인하여 보안성을 높일 수 있습니다.
🔹 2) 사용자 입력값 제한
<?php
$input = "PHP is awesome!";
$maxLength = 10;
if (strlen($input) > $maxLength) {
echo substr($input, 0, $maxLength) . "...";
} else {
echo $input;
}
?>
🔹 실행 결과
PHP is awe...
➡ 사용자가 입력한 텍스트를 일정 길이까지만 표시하고, 너무 길면 "..."을 추가.
🔹 3) 데이터베이스 저장 시 문자열 길이 검사
<?php
$username = "SuperLongUsername";
$maxLength = 15;
if (strlen($username) > $maxLength) {
echo "사용자 이름은 최대 $maxLength자까지 입력 가능합니다.";
} else {
echo "사용자 이름이 유효합니다.";
}
?>
➡ 데이터베이스 저장 전에 입력값이 제한된 길이를 초과하지 않는지 확인.
🔹 4) 이메일 주소 유효성 검사
<?php
$email = "user@example.com";
if (strlen($email) < 5 || strlen($email) > 50) {
echo "이메일 주소는 5자 이상 50자 이하로 입력해야 합니다.";
} else {
echo "이메일 주소가 유효합니다.";
}
?>
➡ 이메일 주소가 너무 짧거나 길지 않은지 검증할 수 있습니다.
🔹 5) 파일 업로드 시 파일명 길이 제한
<?php
$filename = "very_long_filename_example.jpg";
if (strlen($filename) > 20) {
echo "파일명이 너무 깁니다.";
} else {
echo "파일을 업로드할 수 있습니다.";
}
?>
➡ 파일명이 너무 길 경우 업로드 제한할 수 있습니다.
5. strlen()과 다른 문자열 길이 함수 비교
함수 설명
strlen() | 문자열의 바이트 길이 반환 (한글 UTF-8에서 오류 가능) |
mb_strlen() | 문자열의 문자 개수 반환 (멀티바이트 문자 지원) |
iconv_strlen() | mb_strlen()과 유사하지만 iconv 모듈을 사용 |
✅ 한글 문자열 길이 비교
<?php
$text = "안녕하세요";
echo strlen($text); // 15 (UTF-8 환경)
echo mb_strlen($text, "UTF-8"); // 5
?>
➡ 한글을 정확하게 세려면 mb_strlen()을 사용해야 합니다.
6. strlen() 사용 시 주의할 점
✅ 한글 및 UTF-8 문자열은 mb_strlen()을 사용해야 정확한 길이 반환
<?php
echo strlen("안녕하세요"); // 15
echo mb_strlen("안녕하세요", "UTF-8"); // 5
?>
✅ null 값은 0 반환 (경고 없음)
<?php
echo strlen(null); // 0
?>
➡ null을 문자열로 변환하여 빈 문자열("")로 처리됨.
✅ 배열을 전달하면 TypeError 발생 (PHP 8 이상)
<?php
echo strlen(["PHP", "JavaScript"]); // TypeError 발생
?>
➡ 배열을 전달하면 PHP 8부터 오류 발생 (TypeError: strlen(): Argument #1 ($string) must be of type string).
✅ 숫자(정수, 실수)도 문자열로 변환 후 길이를 반환
<?php
echo strlen(12345); // 5
echo strlen(12.34); // 5 (소수점 포함)
?>
7. strlen() 활용 팁
✅ 특정 문자열의 길이를 제한하여 출력
<?php
$text = "PHP is a popular scripting language.";
echo (strlen($text) > 20) ? substr($text, 0, 20) . "..." : $text;
?>
➡ 긴 문자열을 일정 길이까지만 출력하고 ... 추가.
✅ 사용자 입력값 검증
<?php
if (strlen(trim($_POST["username"])) < 3) {
echo "사용자 이름은 최소 3자 이상이어야 합니다.";
}
?>
➡ trim()을 사용하여 앞뒤 공백 제거 후 길이 검증.
8. 결론
PHP의 strlen() 함수는 문자열의 길이를 측정하는 필수적인 함수입니다.
이를 활용하면 비밀번호 검증, 데이터 저장 검토, 이메일 주소 검증, 문자열 출력 제한 등 다양한 작업을 수행할 수 있습니다.
📌 핵심 요약
✔️ strlen()은 문자열 길이를 바이트 단위로 반환
✔️ 한글(UTF-8) 문자열은 mb_strlen()을 사용해야 정확한 길이 반환
✔️ null은 길이 0 반환
✔️ PHP 8 이상에서는 배열을 전달하면 TypeError 발생
이제 strlen()을 활용하여 더욱 효율적인 PHP 개발을 해보세요! 🚀
💡 도움이 되셨다면 공유해주세요! 😊
'💻 자주 쓰는 PHP 함수' 카테고리의 다른 글
[PHP 함수] array_key_exists() 함수 사용 가이드 (18) | 2025.03.23 |
---|---|
[PHP 함수] array_keys() 함수 사용하기 (10) | 2025.03.23 |
[PHP 함수] is_array()로 배열 여부 확인하기 (22) | 2025.03.22 |
[PHP 함수] in_array() 함수로 배열 내에 특정 값의 존재 여부 확인하기 (16) | 2025.03.21 |
[PHP 함수] explode() 함수로 문자열을 배열로 변환하기 (18) | 2025.03.21 |