💻 자주 쓰는 PHP 함수

[PHP 함수] strlen() 함수로 문자열의 길이를 구하기

rhandy 2025. 3. 22. 17:57
728x90

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 개발을 해보세요! 🚀

💡 도움이 되셨다면 공유해주세요! 😊

 

728x90