PHP에서 문자열을 다룰 때 특정 부분만 잘라서 가져와야 하는 경우가 많습니다.
예를 들면, 문자열의 일부를 추출하여 미리보기 텍스트를 생성하거나, 사용자 입력을 일정 길이까지만 저장하는 기능이 필요할 수 있습니다.
이때 가장 유용한 함수가 바로 substr() 함수입니다.
이 글에서는 PHP substr() 함수의 사용법, 다양한 활용 예제, 유용한 팁과 주의사항을 체계적으로 정리하겠습니다.
1. substr() 함수란?
✅ 기본 문법
string substr(string $string, int $start, ?int $length = null)
✅ 매개변수 설명
매개변수 설명
$string | 잘라낼 대상 문자열 |
$start | 시작 위치 (0부터 시작, 음수 사용 가능) |
$length (선택) | 가져올 문자열 길이 (생략하면 끝까지 가져옴) |
✅ 반환값
- $start 위치에서 $length 길이만큼 잘라낸 문자열을 반환
- $length가 생략되면 $start부터 문자열 끝까지 반환
- $start가 음수이면 뒤에서부터 시작
- $length가 음수이면 뒤에서부터 해당 길이만큼 제외하고 반환
2. substr() 기본 예제
🔹 문자열의 일부를 가져오기
<?php
$text = "Hello, PHP World!";
echo substr($text, 7, 3);
?>
🔹 실행 결과
PHP
➡ 7번째 문자부터 3글자를 가져옵니다.
🔹 $length 없이 사용 (끝까지 추출)
<?php
echo substr($text, 7);
?>
🔹 실행 결과
PHP World!
➡ 7번째 문자부터 끝까지 출력됩니다.
🔹 $start 음수 사용 (뒤에서부터 시작)
<?php
echo substr($text, -6, 5);
?>
🔹 실행 결과
World
➡ 문자열의 끝에서 6번째 문자부터 5글자를 가져옵니다.
🔹 $length 음수 사용 (뒤에서 제외)
<?php
echo substr($text, 0, -7);
?>
🔹 실행 결과
Hello, PHP
➡ 문자열의 처음부터 끝에서 7글자를 제외한 부분을 출력합니다.
3. substr()의 실용적인 활용 예제
🔹 1) 긴 문자열을 일정 길이까지만 표시 (미리보기 텍스트)
<?php
$article = "이것은 PHP에서 substr() 함수를 활용하여 문자열을 다루는 예제입니다.";
$preview = substr($article, 0, 20) . "...";
echo $preview;
?>
🔹 실행 결과
이것은 PHP에서 substr()...
➡ 긴 텍스트를 일정 길이까지만 잘라서 미리보기 형식으로 출력할 수 있습니다.
🔹 2) 이메일 아이디 숨기기
<?php
$email = "user@example.com";
$masked = substr($email, 0, 2) . str_repeat("*", strlen($email) - 5) . substr($email, -3);
echo $masked;
?>
🔹 실행 결과
us**********com
➡ 이메일 주소 일부를 *로 변경하여 개인정보 보호할 수 있습니다.
🔹 3) 파일 확장자 추출
<?php
$filename = "document.pdf";
$extension = substr($filename, strrpos($filename, ".") + 1);
echo $extension;
?>
🔹 실행 결과
pdf
➡ strrpos()를 사용하여 마지막 .의 위치를 찾아 확장자를 추출할 수 있습니다.
🔹 4) URL에서 도메인 추출
https://www.example.com/page";
$domain = substr($url, strpos($url, "//") + 2, strpos($url, "/", 8) - strpos($url, "//") - 2);
echo $domain;
?>
🔹 실행 결과
www.example.com
➡ strpos()와 함께 사용하여 URL에서 도메인 부분만 추출할 수 있습니다.
🔹 5) 특정 구분자로 문자열 나누기
<?php
$string = "apple,banana,grape";
$firstWord = substr($string, 0, strpos($string, ","));
echo $firstWord;
?>
🔹 실행 결과
apple
➡ 첫 번째 쉼표 이전의 단어를 추출할 수 있습니다.
4. substr() 함수와 다른 문자열 함수 비교
함수 설명
substr() | 문자열의 일부를 잘라서 반환 |
mb_substr() | 다국어(멀티바이트) 문자열을 안전하게 잘라서 반환 |
strstr() | 특정 문자열 이후의 모든 부분 반환 |
explode() | 특정 구분자로 문자열을 나누어 배열로 반환 |
5. substr() 사용 시 주의할 점
✅ 한글 같은 멀티바이트 문자열 처리 (mb_substr() 사용) substr()은 UTF-8 인코딩의 한글을 처리할 때 문제가 발생할 수 있음.
<?php
$text = "안녕하세요, PHP!";
echo substr($text, 0, 4); // 잘못된 출력: "안녕하?"
?>
➡ 한글이 깨지는 경우 mb_substr()을 사용해야 함.
<?php
echo mb_substr($text, 0, 4, "UTF-8"); // "안녕하세요"
?>
✅ 음수 값을 사용할 때 주의
<?php
echo substr("abcdef", -10); // 전체 문자열보다 큰 음수는 전체 반환됨
?>
✅ substr()은 원본 문자열을 변경하지 않음
<?php
$text = "Hello, World!";
$new_text = substr($text, 0, 5);
echo $text; // 여전히 "Hello, World!"
?>
➡ substr()은 원본 문자열을 변경하지 않고 새로운 문자열을 반환함.
6. substr() 활용 팁
✅ URL 길이 제한 시 유용
$url = "https://example.com/very-long-url";
echo substr($url, 0, 30) . "..."; // 긴 URL을 줄여서 표시
✅ 데이터베이스에서 길이 제한이 있는 컬럼 저장 시
$name = "홍길동입니다.";
$shortName = substr($name, 0, 6);
✅ 비밀번호 마스킹
$password = "my_secure_password";
echo substr($password, 0, 3) . str_repeat("*", strlen($password) - 3);
7. 결론
PHP의 substr() 함수는 문자열에서 특정 부분을 추출하는 강력한 함수입니다.
이를 활용하면 미리보기 텍스트 생성, 데이터 보호, 파일 확장자 추출, URL 처리 등 다양한 작업을 수행할 수 있습니다.
📌 핵심 요약
✔️ substr()은 문자열에서 특정 부분을 추출
✔️ $start는 시작 위치, $length는 잘라낼 길이
✔️ $start와 $length에 음수를 사용하면 뒤에서부터 추출 가능
✔️ 한글 같은 다국어 문자열은 mb_substr()을 사용해야 함
이제 substr()을 활용하여 더욱 효율적인 PHP 개발을 해보세요! 🚀
💡 도움이 되셨다면 공유해주세요! 😊
'💻 자주 쓰는 PHP 함수' 카테고리의 다른 글
[PHP 함수] strpos()로 문자열 찾기 (12) | 2025.03.20 |
---|---|
[PHP 함수] array_merge() 함수로 배열 합치기 (10) | 2025.03.20 |
[PHP 함수] sprintf() 함수 완벽 가이드 (2) | 2025.03.19 |
[PHP 함수] dirname() 함수로 디렉토리 정보 다루기 (6) | 2025.03.18 |
[PHP 함수] count() 함수 완벽 정리: 기본 개념부터 실전 활용까지 (8) | 2025.03.18 |