Str 클래스란
Illuminate\Support\Str 클래스는 문자열 조작을 위한 풍부한 메서드를 제공합니다. PHP의 표준 문자열 함수를 개별로 호출하는 대신에, 통일된 인터페이스로 직관적으로 문자열을 처리할 수 있습니다.
Laravel의 문자열 조작에는 2개의 스타일이 있습니다.
- 정적 메서드 스타일:
Str::slug($title, '-')— 단발의 조작에 적합합니다 - Fluent 스타일 (메서드 체인):
Str::of($title)->slug('-')->limit(50)— 여러 조작을 이어 쓸 수 있습니다
str() 글로벌 헬퍼 함수는 Str::of()와 동등합니다. str('hello')->upper()처럼 작성할 수 있습니다.케이스 변환
문자열의 케이스(대문자·소문자·기법)를 변환하는 메서드입니다. 데이터베이스의 컬럼명이나 API 응답의 키 변환에서 자주 사용합니다.Str::camel() / Str::snake() / Str::kebab() / Str::studly()
Str::lower() / Str::upper() / Str::title()
슬러그와 URL
Str::slug() — URL 프렌들리한 슬러그를 생성
기사나 페이지의 URL을 생성할 때 필수의 메서드입니다. 공백이나 특수 문자를 변환해, URL에 안전한 문자열을 만듭니다.
Str::of()로 슬러그 생성부터 검증까지 일괄 처리
문자열의 자르기
Str::limit() — 문자수로 자르기
기사의 본문이나 코멘트를 일람 표시할 때에 프리뷰 텍스트를 생성하는 메서드입니다.
Str::words() — 단어수로 자르기
문자열의 검색과 확인
Str::contains() — 문자열을 포함하는지 확인
Str::startsWith() / Str::endsWith()
Str::is() — 와일드카드 패턴 매치
문자열의 변환과 치환
Str::replace() — 문자열을 치환
Str::replaceArray() — 배열로 차례로 치환
Str::replaceMatches() — 정규 표현식으로 치환
Str::remove() — 문자열을 삭제
Str::squish() — 여분의 공백을 제거
문자열의 전후 조작
Str::before() / Str::after()
Str::between() — 2개의 문자열 사이를 취득
Str::start() / Str::finish() — 특정 문자로 시작·끝나게 함
이미 그 문자로 시작되고 있으면 추가하지 않습니다(이중화하지 않음).
Str::chopStart() / Str::chopEnd() — 특정의 접두사·접미사를 제거
마스킹과 시큐리티
Str::mask() — 문자열을 마스크
메일 주소나 전화번호의 일부를 감추는 처리에 사용합니다.
Str::excerpt() — 문맥 첨부로 문자열을 뽑아냄
검색 결과의 스니펫 표시 등에 사용합니다.
랜덤 문자열과 식별자
Str::random() — 랜덤 문자열을 생성
토큰이나 비밀번호 리셋용의 키를 생성할 때에 사용합니다.
Str::uuid() / Str::ulid() — UUID·ULID 생성
Str::password() — 시큐어한 비밀번호 생성
Str::counted() — 수량 첨부의 단수·복수형
수치에 따라 단수·복수형으로 변환하고, 포맷된 수치와 함께 반환합니다.
Fluent Strings (메서드 체인)
Str::of() 또는 str()로 시작하면, Stringable 인스턴스가 반환되며, 메서드를 체인할 수 있습니다. 최종적으로 문자열로서 사용하고 싶은 경우는 (string)으로 캐스트하거나, 문자열 컨텍스트로 사용합니다.
실용적인 메서드 체인의 예
블로그 기사의 슬러그 생성조건부 메서드 체인 (when())
pipe() — 임의의 콜백을 끼움
Str::of()에서 사용할 수 있는 주요 메서드 일람
Fluent Strings에서 사용할 수 있는 메서드는 정적 메서드와 거의 같은 세트입니다. 이하는 대표적인 것입니다.
정리
자주 사용하는 Str 메서드 일람
자주 사용하는 Str 메서드 일람
정적 메서드 vs Fluent (Str::of)
정적 메서드 vs Fluent (Str::of)
정적 메서드를 사용하는 장면:Fluent (Str::of)를 사용하는 장면:
- 1~2회의 변환만으로 좋은 경우
- 심플하고 읽기 쉬운 코드
- 3개 이상의 변환을 정리하여 수행하는 경우
- 조건 분기(
when())를 포함하는 경우 - 처리의 흐름을 위에서 아래로 읽을 수 있게 하고 싶은 경우
Str 클래스 vs PHP 표준 함수
Str 클래스 vs PHP 표준 함수
PHP의
strtolower(), substr(), str_replace() 등의 표준 함수 대신에 Str 클래스를 사용함으로써:- 멀티바이트 문자(한국어)를 안전하게 다룰 수 있음 (
mb_*함수를 내부에서 사용) - 메서드 체인으로 처리를 정리할 수 있음
- 인수의 순서를 외우지 않아도 됨 (일관된 인터페이스)
- Laravel의 코드 스타일에 통일할 수 있음