문자열
소개
Laravel은 문자열 값을 조작하기 위한 다양한 함수를 포함하고 있습니다. 이 함수들 중 많은 부분은 프레임워크 자체에서 사용되지만, 편리하다고 생각되면 본인의 애플리케이션에서도 자유롭게 사용할 수 있습니다.
사용 가능한 메서드
문자열
__ class_basename e preg_replace_array Str::after Str::afterLast Str::apa Str::ascii Str::before Str::beforeLast Str::between Str::betweenFirst Str::camel Str::charAt Str::chopStart Str::chopEnd Str::contains Str::containsAll Str::counted Str::doesntContain Str::doesntEndWith Str::doesntStartWith Str::deduplicate Str::endsWith Str::excerpt Str::finish Str::fromBase64 Str::headline Str::initials Str::inlineMarkdown Str::is Str::isAscii Str::isJson Str::isUlid Str::isUrl Str::isUuid Str::kebab Str::lcfirst Str::length Str::limit Str::lower Str::markdown Str::mask Str::match Str::matchAll Str::isMatch Str::orderedUuid Str::padBoth Str::padLeft Str::padRight Str::password Str::plural Str::pluralStudly Str::position Str::random Str::remove Str::repeat Str::replace Str::replaceArray Str::replaceFirst Str::replaceLast Str::replaceMatches Str::replaceStart Str::replaceEnd Str::reverse Str::singular Str::slug Str::snake Str::squish Str::start Str::startsWith Str::studly Str::substr Str::substrCount Str::substrReplace Str::swap Str::take Str::title Str::toBase64 Str::transliterate Str::trim Str::ltrim Str::rtrim Str::ucfirst Str::ucsplit Str::ucwords Str::upper Str::ulid Str::unwrap Str::uuid Str::uuid7 Str::wordCount Str::wordWrap Str::words Str::wrap str trans trans_choice
유창한 문자열
after afterLast apa append ascii basename before beforeLast between betweenFirst camel charAt classBasename chopStart chopEnd contains containsAll counted decrypt deduplicate dirname doesntContain doesntEndWith doesntStartWith encrypt endsWith exactly excerpt explode finish fromBase64 hash headline initials inlineMarkdown is isAscii isEmpty isNotEmpty isJson isUlid isUrl isUuid kebab lcfirst length limit lower markdown mask match matchAll isMatch newLine padBoth padLeft padRight pipe plural position prepend remove repeat replace replaceArray replaceFirst replaceLast replaceMatches replaceStart replaceEnd scan singular slug snake split squish start startsWith stripTags studly substr substrReplace swap take tap test title toBase64 toHtmlString toUri transliterate trim ltrim rtrim ucfirst ucsplit ucwords unwrap upper when whenContains whenContainsAll whenDoesntEndWith whenDoesntStartWith whenEmpty whenNotEmpty whenStartsWith whenEndsWith whenExactly whenNotExactly whenIs whenIsAscii whenIsUlid whenIsUuid whenTest wordCount words wrap
문자열
__() {.collection-method}
__ 함수는 제공된 번역 문자열 또는 번역 키를 언어 파일을 사용하여 번역합니다:
echo __('Welcome to our application');
echo __('messages.welcome');
지정된 번역 문자열이나 키가 존재하지 않는 경우, __ 함수는 주어진 값을 반환합니다. 따라서 위 예제를 사용하면, __ 함수는 해당 번역 키가 존재하지 않을 경우 messages.welcome를 반환합니다.
class_basename() {.collection-method}
class_basename 함수는 주어진 클래스의 네임스페이스를 제거한 후 클래스 이름을 반환합니다:
$class = class_basename('Foo\Bar\Baz');
// Baz
e() {.collection-method}
e 함수는 기본적으로 double_encode 옵션이 true로 설정된 상태에서 PHP의 htmlspecialchars 함수를 실행합니다:
echo e('<html>foo</html>');
// <html>foo</html>
preg_replace_array() {.collection-method}
preg_replace_array 함수는 배열을 사용하여 문자열에서 주어진 패턴을 순차적으로 교체합니다:
$string = 'The event will take place between :start and :end';
$replaced = preg_replace_array('/:[a-z_]+/', ['8:30', '9:00'], $string);
// The event will take place between 8:30 and 9:00
Str::after() {.collection-method}
Str::after 메서드는 문자열에서 주어진 값 이후의 모든 것을 반환합니다. 문자열 내에 값이 존재하지 않으면 전체 문자열이 반환됩니다:
use Illuminate\Support\Str;
$slice = Str::after('This is my name', 'This is');
// ' my name'
Str::afterLast() {.collection-method}
Str::afterLast 메서드는 문자열에서 주어진 값이 마지막으로 나타난 이후의 모든 것을 반환합니다. 값이 문자열 내에 존재하지 않으면 전체 문자열이 반환됩니다:
use Illuminate\Support\Str;
$slice = Str::afterLast('App\Http\Controllers\Controller', '\\');
// 'Controller'
Str::apa() {.collection-method}
Str::apa 방법은 주어진 문자열을 APA 지침에 따라 제목 대문자로 변환합니다:
use Illuminate\Support\Str;
$title = Str::apa('Creating A Project');
// 'Creating a Project'
Str::ascii() {.collection-method}
Str::ascii 방법은 문자열을 ASCII 값으로 음역하려고 시도할 것입니다:
use Illuminate\Support\Str;
$slice = Str::ascii('û');
// 'u'
Str::before() {.collection-method}
Str::before 메서드는 문자열에서 주어진 값 이전의 모든 것을 반환합니다:
use Illuminate\Support\Str;
$slice = Str::before('This is my name', 'my name');
// 'This is '
Str::beforeLast() {.collection-method}
Str::beforeLast 메서드는 문자열에서 주어진 값이 마지막으로 나타나기 전의 모든 것을 반환합니다:
use Illuminate\Support\Str;
$slice = Str::beforeLast('This is my name', 'is');
// 'This '
Str::between() {.collection-method}
Str::between 메서드는 두 값 사이의 문자열 부분을 반환합니다:
use Illuminate\Support\Str;
$slice = Str::between('This is my name', 'This', 'name');
// ' is my '
Str::betweenFirst() {.collection-method}
Str::betweenFirst 메서드는 두 값 사이의 문자열에서 가능한 가장 작은 부분을 반환합니다:
use Illuminate\Support\Str;
$slice = Str::betweenFirst('[a] bc [d]', '[', ']');
// 'a'
Str::camel() {.collection-method}
Str::camel 방법은 주어진 문자열을 camelCase로 변환합니다:
use Illuminate\Support\Str;
$converted = Str::camel('foo_bar');
// 'fooBar'
Str::charAt() {.collection-method}
Str::charAt 메서드는 지정된 인덱스의 문자를 반환합니다. 인덱스가 범위를 벗어나면 false가 반환됩니다:
use Illuminate\Support\Str;
$character = Str::charAt('This is my name.', 6);
// 's'
Str::chopStart() {.collection-method}
Str::chopStart 방법은 주어진 값이 문자열의 시작에 나타나는 경우에만 첫 번째 발생을 제거합니다:
use Illuminate\Support\Str;
$url = Str::chopStart('https://laravel.com', 'https://');
// 'laravel.com'
두 번째 인수로 배열을 전달할 수도 있습니다. 문자열이 배열의 값 중 하나로 시작하면 해당 값이 문자열에서 제거됩니다:
use Illuminate\Support\Str;
$url = Str::chopStart('http://laravel.com', ['https://', 'http://']);
// 'laravel.com'
Str::chopEnd() {.collection-method}
Str::chopEnd 방법은 주어진 값이 문자열의 끝에 나타나는 경우에만 마지막으로 나타나는 값을 제거합니다:
use Illuminate\Support\Str;
$url = Str::chopEnd('app/Models/Photograph.php', '.php');
// 'app/Models/Photograph'
두 번째 인수로 배열을 전달할 수도 있습니다. 문자열이 배열의 값 중 하나로 끝나면 그 값이 문자열에서 제거됩니다:
use Illuminate\Support\Str;
$url = Str::chopEnd('laravel.com/index.php', ['/index.html', '/index.php']);
// 'laravel.com'
Str::contains() {.collection-method}
Str::contains 방법은 주어진 문자열에 지정된 값이 포함되어 있는지 여부를 결정합니다. 기본적으로 이 방법은 대소문자를 구분합니다:
use Illuminate\Support\Str;
$contains = Str::contains('This is my name', 'my');
// true
주어진 문자열이 배열의 값 중 어느 것이라도 포함하고 있는지 확인하기 위해 값들의 배열을 전달할 수도 있습니다:
use Illuminate\Support\Str;
$contains = Str::contains('This is my name', ['my', 'foo']);
// true
ignoreCase 인수를 true로 설정하여 대소문자 구분을 비활성화할 수 있습니다:
use Illuminate\Support\Str;
$contains = Str::contains('This is my name', 'MY', ignoreCase: true);
// true
Str::containsAll() {.collection-method}
Str::containsAll 메서드는 주어진 문자열이 주어진 배열의 모든 값을 포함하는지 판단합니다:
use Illuminate\Support\Str;
$containsAll = Str::containsAll('This is my name', ['my', 'name']);
// true
ignoreCase 인수를 true로 설정하여 대소문자 구분을 비활성화할 수 있습니다:
use Illuminate\Support\Str;
$containsAll = Str::containsAll('This is my name', ['MY', 'NAME'], ignoreCase: true);
// true
Str::doesntContain() {.collection-method}
Str::doesntContain 방법은 주어진 문자열에 주어진 값이 포함되지 않았는지 확인합니다. 기본적으로 이 방법은 대소문자를 구분합니다:
use Illuminate\Support\Str;
$doesntContain = Str::doesntContain('This is name', 'my');
// true
주어진 문자열이 배열의 값 중 어느 것도 포함하지 않는지 확인하려면 값의 배열을 전달할 수도 있습니다:
use Illuminate\Support\Str;
$doesntContain = Str::doesntContain('This is name', ['my', 'framework']);
// true
ignoreCase 인수를 true로 설정하여 대소문자 구분을 비활성화할 수 있습니다:
use Illuminate\Support\Str;
$doesntContain = Str::doesntContain('This is name', 'MY', ignoreCase: true);
// true
Str::deduplicate() {.collection-method}
Str::deduplicate 메서드는 주어진 문자열에서 연속된 문자의 반복을 그 문자 하나로 바꿉니다. 기본적으로 이 메서드는 공백을 중복 제거합니다:
use Illuminate\Support\Str;
$result = Str::deduplicate('The Laravel Framework');
// The Laravel Framework
두 번째 인수로 메서드에 전달하여 중복 제거할 다른 문자를 지정할 수 있습니다:
use Illuminate\Support\Str;
$result = Str::deduplicate('The---Laravel---Framework', '-');
// The-Laravel-Framework
Str::doesntEndWith() {.collection-method}
Str::doesntEndWith 메서드는 주어진 문자열이 주어진 값으로 끝나지 않는지 여부를 결정합니다:
use Illuminate\Support\Str;
$result = Str::doesntEndWith('This is my name', 'dog');
// true
주어진 문자열이 배열 내의 어떤 값으로도 끝나지 않는지 확인하기 위해 값들의 배열을 전달할 수도 있습니다:
use Illuminate\Support\Str;
$result = Str::doesntEndWith('This is my name', ['this', 'foo']);
// true
$result = Str::doesntEndWith('This is my name', ['name', 'foo']);
// false
Str::doesntStartWith() {.collection-method}
Str::doesntStartWith 메서드는 주어진 문자열이 주어진 값으로 시작하지 않는지 여부를 결정합니다:
use Illuminate\Support\Str;
$result = Str::doesntStartWith('This is my name', 'That');
// true
만약 가능한 값들의 배열이 전달되면, 문자열이 주어진 값 중 어느 것으 로도 시작하지 않을 경우 doesntStartWith 메소드는 true를 반환합니다:
$result = Str::doesntStartWith('This is my name', ['What', 'That', 'There']);
// true
Str::endsWith() {.collection-method}
Str::endsWith 방법은 주어진 문자열이 주어진 값으로 끝나는지 여부를 결정합니다:
use Illuminate\Support\Str;
$result = Str::endsWith('This is my name', 'name');
// true
주어진 문자열이 배열의 값 중 어느 것으로 끝나는지 확인하기 위해 값 배열을 전달할 수도 있습니다:
use Illuminate\Support\Str;
$result = Str::endsWith('This is my name', ['name', 'foo']);
// true
$result = Str::endsWith('This is my name', ['this', 'foo']);
// false
Str::excerpt() {.collection-method}
Str::excerpt 방법은 주어진 문자열에서 해당 문자열 내의 구문과 일치하는 첫 번째 사례를 추출합니다:
use Illuminate\Support\Str;
$excerpt = Str::excerpt('This is my name', 'my', [
'radius' => 3
]);
// '...is my na...'
기본값이 100인 radius 옵션은 잘린 문자열 양쪽에 표시될 문자 수를 정의할 수 있게 합니다.
또한, omission 옵션을 사용하여 잘린 문자열 앞뒤에 추가될 문자열을 정의할 수 있습니다:
use Illuminate\Support\Str;
$excerpt = Str::excerpt('This is my name', 'name', [
'radius' => 3,
'omission' => '(...) '
]);
// '(...) my name'
Str::finish() {.collection-method}
Str::finish 메서드는 문자열이 이미 그 값으로 끝나지 않는 경우 주어진 값을 단일 인스턴스로 문자열에 추가합니다:
use Illuminate\Support\Str;
$adjusted = Str::finish('this/string', '/');
// this/string/
$adjusted = Str::finish('this/string/', '/');
// this/string/
Str::fromBase64() {.collection-method}
Str::fromBase64 방법은 주어진 Base64 문자열을 디코딩합니다:
use Illuminate\Support\Str;
$decoded = Str::fromBase64('TGFyYXZlbA==');
// Laravel
Str::headline() {.collection-method}
Str::headline 방법은 대소문자, 하이픈, 또는 밑줄로 구분된 문자열을 각 단어의 첫 글자를 대문자로 하여 공백으로 구분된 문자열로 변환합니다:
use Illuminate\Support\Str;
$headline = Str::headline('steve_jobs');
// Steve Jobs
$headline = Str::headline('EmailNotificationSent');
// Email Notification Sent
Str::initials() {.collection-method}
Str::initials 메서드는 주어진 문자열의 이니셜을 반환하며, 선택적으로 대문자로 만들 수 있습니다:
use Illuminate\Support\Str;
$initials = Str::initials('taylor otwell');
// to
$initials = Str::initials('taylor otwell', capitalize: true);
// TO
Str::inlineMarkdown() {.collection-method}
Str::inlineMarkdown 방법은 CommonMark를 사용하여 GitHub 스타일의 Markdown을 인라인 HTML로 변환합니다. 그러나 markdown 방법과 달리, 생성된 모든 HTML을 블록 수준 요소로 감싸지 않습니다:
use Illuminate\Support\Str;
$html = Str::inlineMarkdown('**Laravel**');
// <strong>Laravel</strong>
마크다운 보안
기본적으로 마크다운은 원시 HTML을 지원하며, 이는 사용자의 원시 입력과 함께 사용할 경우 교차 사이트 스크립팅(XSS) 취약성을 노출할 수 있습니다. CommonMark 보안 문서에 따르면, 원시 HTML을 이스케이프하거나 제거하려면 html_input 옵션을 사용할 수 있으며, 안전하지 않은 링크 허용 여부를 지정하려면 allow_unsafe_links 옵션을 사용할 수 있습니다. 일부 원시 HTML을 허용해야 하는 경우, 컴파일된 마크다운을 HTML 정화기를 통해 처리해야 합니다:
use Illuminate\Support\Str;
Str::inlineMarkdown('Inject: <script>alert("Hello XSS!");</script>', [
'html_input' => 'strip',
'allow_unsafe_links' => false,
]);
// Inject: alert("Hello XSS!");
Str::is() {.collection-method}
Str::is 방법은 주어진 문자열이 주어진 패턴과 일치하는지 여부를 결정합니다. 별표는 와일드카드 값으로 사용할 수 있습니다:
use Illuminate\Support\Str;
$matches = Str::is('foo*', 'foobar');
// true
$matches = Str::is('baz*', 'foobar');
// false
ignoreCase 인수를 true로 설정하여 대소문자 구분을 비활성화할 수 있습니다:
use Illuminate\Support\Str;
$matches = Str::is('*.jpg', 'photo.JPG', ignoreCase: true);
// true
Str::isAscii() {.collection-method}
Str::isAscii 방법은 주어진 문자열이 7비트 ASCII인지 여부를 결정합니다:
use Illuminate\Support\Str;
$isAscii = Str::isAscii('Taylor');
// true
$isAscii = Str::isAscii('ü');
// false
Str::isJson() {.collection-method}
Str::isJson 메서드는 주어진 문자열이 유효한 JSON인지 확인합니다:
use Illuminate\Support\Str;
$result = Str::isJson('[1,2,3]');
// true
$result = Str::isJson('{"first": "John", "last": "Doe"}');
// true
$result = Str::isJson('{first: "John", last: "Doe"}');
// false
Str::isUrl() {.collection-method}
Str::isUrl 방법은 주어진 문자열이 유효한 URL인지 확인합니다:
use Illuminate\Support\Str;
$isUrl = Str::isUrl('http://example.com');
// true
$isUrl = Str::isUrl('laravel');
// false
isUrl 방법은 광범위한 프로토콜을 유효한 것으로 간주합니다. 그러나 isUrl 방법에 프로토콜을 제공하여 어떤 프로토콜을 유효하게 간주할지 지정할 수 있습니다:
$isUrl = Str::isUrl('http://example.com', ['http', 'https']);
Str::isUlid() {.collection-method}
Str::isUlid 방법은 주어진 문자열이 유효한 ULID인지 여부를 결정합니다:
use Illuminate\Support\Str;
$isUlid = Str::isUlid('01gd6r360bp37zj17nxb55yv40');
// true
$isUlid = Str::isUlid('laravel');
// false
Str::isUuid() {.collection-method}
Str::isUuid 메서드는 주어진 문자열이 유효한 UUID인지 확인합니다:
use Illuminate\Support\Str;
$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de');
// true
$isUuid = Str::isUuid('laravel');
// false
주어진 UUID가 버전(1, 3, 4, 5, 6, 7 또는 8)에 따른 UUID 규격과 일치하는지도 확인할 수 있습니다:
use Illuminate\Support\Str;
$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de', version: 4);
// true
$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de', version: 1);
// false
Str::kebab() {.collection-method}
Str::kebab 방법은 주어진 문자열을 kebab-case로 변환합니다:
use Illuminate\Support\Str;
$converted = Str::kebab('fooBar');
// foo-bar
Str::lcfirst() {.collection-method}
Str::lcfirst 메서드는 주어진 문자열의 첫 번째 문자를 소문자로 변환하여 반환합니다:
use Illuminate\Support\Str;
$string = Str::lcfirst('Foo Bar');
// foo Bar
Str::length() {.collection-method}
Str::length 메서드는 주어진 문자열의 길이를 반환합니다:
use Illuminate\Support\Str;
$length = Str::length('Laravel');
// 7
Str::limit() {.collection-method}
Str::limit 메서드는 주어진 문자열을 지정된 길이로 잘라냅니다:
use Illuminate\Support\Str;
$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20);
// The quick brown fox...
잘린 문자열 끝에 추가될 문자열을 변경하기 위해 메서드에 세 번째 인수를 전달할 수 있습니다:
$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20, ' (...)');
// The quick brown fox (...)
문자열을 잘라낼 때 전체 단어를 유지하고 싶다면 preserveWords 인수를 사용할 수 있습니다. 이 인수가 true일 경우, 문자열은 가장 가까운 전체 단어 경계까지 잘려집니다:
$truncated = Str::limit('The quick brown fox', 12, preserveWords: true);
// The quick...
Str::lower() {.collection-method}
Str::lower 메서드는 주어진 문자열을 소문자로 변환합니다:
use Illuminate\Support\Str;
$converted = Str::lower('LARAVEL');
// laravel
Str::markdown() {.collection-method}
Str::markdown 방법은 CommonMark를 사용하여 GitHub 풍의 Markdown을 HTML로 변환합니다:
use Illuminate\Support\Str;
$html = Str::markdown('# Laravel');
// <h1>Laravel</h1>
$html = Str::markdown('# Taylor <b>Otwell</b>', [
'html_input' => 'strip',
]);
// <h1>Taylor Otwell</h1>
마크다운 보안
기본적으로 마크다운은 원시 HTML을 지원하며, 이는 사용자의 원시 입력과 함께 사용할 때 교차 사이트 스크립팅(XSS) 취약성을 노출할 수 있습니다. CommonMark 보안 문서에 따르면, 원시 HTML을 이스케이프하거나 제거하려면 html_input 옵션을 사용할 수 있으며, 안전하지 않은 링크 허용 여부를 지정하려면 allow_unsafe_links 옵션을 사용할 수 있습니다. 일부 원시 HTML을 허용해야 하는 경우, 컴파일된 마크다운을 HTML 정화기를 통해 처리해야 합니다:
use Illuminate\Support\Str;
Str::markdown('Inject: <script>alert("Hello XSS!");</script>', [
'html_input' => 'strip',
'allow_unsafe_links' => false,
]);
// <p>Inject: alert("Hello XSS!");</p>
Str::mask() {.collection-method}
Str::mask 방법은 문자열의 일부를 반복된 문자로 가리며, 이메일 주소나 전화번호와 같은 문자열의 일부를 난독화하는 데 사용할 수 있습니다:
use Illuminate\Support\Str;
$string = Str::mask('taylor@example.com', '*', 3);
// tay***************
필요하다면 세 번째 인수로 mask 메서드에 음수를 제공할 수 있으며, 이는 메서드가 문자열 끝에서 지정된 거리만큼 떨어진 지점부터 마스킹을 시작하도록 지시합니다:
$string = Str::mask('taylor@example.com', '*', -15, 3);
// tay***@example.com
Str::match() {.collection-method}
Str::match 메서드는 주어진 정규 표현식 패턴과 일치하는 문자열의 일부를 반환합니다:
use Illuminate\Support\Str;
$result = Str::match('/bar/', 'foo bar');
// 'bar'
$result = Str::match('/foo (.*)/', 'foo bar');
// 'bar'
Str::matchAll() {.collection-method}
Str::matchAll 메서드는 주어진 정규 표현식 패턴과 일치하는 문자열의 부분들을 포함하는 컬렉션을 반환합니다:
use Illuminate\Support\Str;
$result = Str::matchAll('/bar/', 'bar foo bar');
// collect(['bar', 'bar'])
표현식 내에서 일치 그룹을 지정하면, Laravel은 첫 번째 일치 그룹의 매치들의 컬렉션을 반환합니다:
use Illuminate\Support\Str;
$result = Str::matchAll('/f(\w*)/', 'bar fun bar fly');
// collect(['un', 'ly']);
일치하는 항목이 없으면 빈 컬렉션이 반환됩니다.
Str::isMatch() {.collection-method}
문자열이 주어진 정규식과 일치하면 Str::isMatch 메서드는 true를 반환합니다:
use Illuminate\Support\Str;
$result = Str::isMatch('/foo (.*)/', 'foo bar');
// true
$result = Str::isMatch('/foo (.*)/', 'laravel');
// false
Str::orderedUuid() {.collection-method}
Str::orderedUuid 방법은 인덱스가 있는 데이터베이스 열에 효율적으로 저장될 수 있는 “타임스탬프 우선” UUID를 생성합니다. 이 방법을 사용하여 생성된 각 UUID는 이전에 이 방법을 사용하여 생성된 UUID 뒤에 정렬됩니다:
use Illuminate\Support\Str;
return (string) Str::orderedUuid();
Str::padBoth() {.collection-method}
Str::padBoth 메서드는 PHP의 str_pad 함수를 감싸서, 최종 문자열이 원하는 길이에 도달할 때까지 문자열의 양쪽에 다른 문자열을 채웁니다:
use Illuminate\Support\Str;
$padded = Str::padBoth('James', 10, '_');
// '__James___'
$padded = Str::padBoth('James', 10);
// ' James '
Str::padLeft() {.collection-method}
Str::padLeft 메서드는 PHP의 str_pad 함수를 감싸며, 최종 문자열이 원하는 길이에 도달할 때까지 문자열의 왼쪽을 다른 문자열로 채웁니다:
use Illuminate\Support\Str;
$padded = Str::padLeft('James', 10, '-=');
// '-=-=-James'
$padded = Str::padLeft('James', 10);
// ' James'
Str::padRight() {.collection-method}
Str::padRight 메서드는 PHP의 str_pad 함수를 감싸며, 최종 문자열이 원하는 길이에 도달할 때까지 문자열의 오른쪽을 다른 문자열로 채웁니다:
use Illuminate\Support\Str;
$padded = Str::padRight('James', 10, '-');
// 'James-----'
$padded = Str::padRight('James', 10);
// 'James '
Str::password() {.collection-method}
Str::password 방법은 주어진 길이의 안전하고 무작위적인 비밀번호를 생성하는 데 사용할 수 있습니다. 비밀번호는 문자, 숫자, 기호 및 공백의 조합으로 구성됩니다. 기본적으로 비밀번호 길이는 32자입니다:
use Illuminate\Support\Str;
$password = Str::password();
// 'EbJo2vE-AS:U,$%_gkrV4n,q~1xy/-_4'
$password = Str::password(12);
// 'qwuar>#V|i]N'
Str::counted() {.collection-method}
Str::counted 방법은 단일 단어 문자열을 주어진 수에 따라 단수 또는 복수 형태로 변환하고 결과 앞에 형식화된 수를 접두사로 붙입니다:
use Illuminate\Support\Str;
$label = Str::counted('order', 1);
// 1 order
$label = Str::counted('order', 1000);
// 1,000 orders
Str::plural() {.collection-method}
Str::plural 메서드는 단수 단어 문자열을 복수형으로 변환합니다. 이 함수는 Laravel의 복수화 도구에서 지원하는 모든 언어를 지원합니다:
use Illuminate\Support\Str;
$plural = Str::plural('car');
// cars
$plural = Str::plural('child');
// children
문자열의 단수형 또는 복수형을 가져오기 위해 함수의 두 번째 인수로 정수를 제공할 수 있습니다:
use Illuminate\Support\Str;
$plural = Str::plural('child', 2);
// children
$singular = Str::plural('child', 1);
// child
prependCount 인수는 형식화된 $count로 복수형 문자열을 접두사로 붙이기 위해 제공될 수 있습니다:
use Illuminate\Support\Str;
$label = Str::plural('car', 1000, prependCount: true);
// 1,000 cars
Str::pluralStudly() {.collection-method}
Str::pluralStudly 메서드는 스터들리 케이스로 형식화된 단일 단어 문자열을 복수형으로 변환합니다. 이 함수는 Laravel의 복수형 변환기가 지원하는 모든 언어를 지원합니다:
use Illuminate\Support\Str;
$plural = Str::pluralStudly('VerifiedHuman');
// VerifiedHumans
$plural = Str::pluralStudly('UserFeedback');
// UserFeedback
문자열의 단수형 또는 복수형을 가져오기 위해 함수의 두 번째 인수로 정수를 제공할 수 있습니다:
use Illuminate\Support\Str;
$plural = Str::pluralStudly('VerifiedHuman', 2);
// VerifiedHumans
$singular = Str::pluralStudly('VerifiedHuman', 1);
// VerifiedHuman
Str::position() {.collection-method}
Str::position 메서드는 문자열에서 하위 문자열이 처음으로 나타나는 위치를 반환합니다. 주어진 문자열에 하위 문자열이 존재하지 않는 경우 false가 반환됩니다:
use Illuminate\Support\Str;
$position = Str::position('Hello, World!', 'Hello');
// 0
$position = Str::position('Hello, World!', 'W');
// 7
Str::random() {.collection-method}
Str::random 메서드는 지정된 길이의 임의 문자열을 생성합니다. 이 함수는 PHP의 random_bytes 함수를 사용합니다:
use Illuminate\Support\Str;
$random = Str::random(40);
테스트 중에는 Str::random 메서드가 반환하는 값을 ‘가짜’로 만드는 것이 유용할 수 있습니다. 이를 달성하기 위해 createRandomStringsUsing 메서드를 사용할 수 있습니다:
Str::createRandomStringsUsing(function () {
return 'fake-random-string';
});
random 메서드가 정상적으로 랜덤 문자열 생성으로 돌아가도록 지시하려면, createRandomStringsNormally 메서드를 호출할 수 있습니다:
Str::createRandomStringsNormally();
Str::remove() {.collection-method}
Str::remove 메서드는 주어진 값이나 값의 배열을 문자열에서 제거합니다:
use Illuminate\Support\Str;
$string = 'Peter Piper picked a peck of pickled peppers.';
$removed = Str::remove('e', $string);
// Ptr Pipr pickd a pck of pickld ppprs.
문자열을 제거할 때 대소문자를 무시하려면 remove 메서드의 세 번째 인수로 false를 전달할 수도 있습니다.
Str::repeat() {.collection-method}
Str::repeat 메서드는 주어진 문자열을 반복합니다:
use Illuminate\Support\Str;
$string = 'a';
$repeat = Str::repeat($string, 5);
// aaaaa
Str::replace() {.collection-method}
Str::replace 메서드는 문자열 내에서 주어진 문자열을 교체합니다:
use Illuminate\Support\Str;
$string = 'Laravel 11.x';
$replaced = Str::replace('11.x', '12.x', $string);
// Laravel 12.x
replace 메서드는 또한 caseSensitive 인수를 허용합니다. 기본적으로 replace 메서드는 대소문자를 구분합니다:
$replaced = Str::replace(
'php',
'Laravel',
'PHP Framework for Web Artisans',
caseSensitive: false
);
// Laravel Framework for Web Artisans
Str::replaceArray() {.collection-method}
Str::replaceArray 방법은 배열을 사용하여 문자열의 주어진 값을 순차적으로 교체합니다:
use Illuminate\Support\Str;
$string = 'The event will take place between ? and ?';
$replaced = Str::replaceArray('?', ['8:30', '9:00'], $string);
// The event will take place between 8:30 and 9:00
Str::replaceFirst() {.collection-method}
Str::replaceFirst 메서드는 문자열에서 주어진 값의 첫 번째 발생을 교체합니다:
use Illuminate\Support\Str;
$replaced = Str::replaceFirst('the', 'a', 'the quick brown fox jumps over the lazy dog');
// a quick brown fox jumps over the lazy dog
Str::replaceLast() {.collection-method}
Str::replaceLast 메서드는 문자열에서 주어진 값의 마지막 발생을 대체합니다:
use Illuminate\Support\Str;
$replaced = Str::replaceLast('the', 'a', 'the quick brown fox jumps over the lazy dog');
// the quick brown fox jumps over a lazy dog
Str::replaceMatches() {.collection-method}
Str::replaceMatches 메서드는 패턴과 일치하는 문자열의 모든 부분을 주어진 대체 문자열로 바꿉니다:
use Illuminate\Support\Str;
$replaced = Str::replaceMatches(
pattern: '/[^A-Za-z0-9]++/',
replace: '',
subject: '(+1) 501-555-1000'
);
// '15015551000'
replaceMatches 메서드는 주어진 패턴과 일치하는 문자열의 각 부분에 대해 호출될 클로저도 허용하므로, 클로저 내에서 교체 로직을 수행하고 교체된 값을 반환할 수 있습니다:
use Illuminate\Support\Str;
$replaced = Str::replaceMatches('/\d/', function (array $matches) {
return '['.$matches[0].']';
}, '123');
// '[1][2][3]'
Str::replaceStart() {.collection-method}
Str::replaceStart 방법은 값이 문자열의 시작 부분에 나타날 경우에만 주어진 값의 첫 번째 발생을 교체합니다:
use Illuminate\Support\Str;
$replaced = Str::replaceStart('Hello', 'Laravel', 'Hello World');
// Laravel World
$replaced = Str::replaceStart('World', 'Laravel', 'Hello World');
// Hello World
Str::replaceEnd() {.collection-method}
Str::replaceEnd 방법은 주어진 값이 문자열의 끝에 나타나는 경우에만 마지막 발생을 대체합니다:
use Illuminate\Support\Str;
$replaced = Str::replaceEnd('World', 'Laravel', 'Hello World');
// Hello Laravel
$replaced = Str::replaceEnd('Hello', 'Laravel', 'Hello World');
// Hello World
Str::reverse() {.collection-method}
Str::reverse 방법은 주어진 문자열을 뒤집습니다:
use Illuminate\Support\Str;
$reversed = Str::reverse('Hello World');
// dlroW olleH
Str::singular() {.collection-method}
Str::singular 메서드는 문자열을 단수형으로 변환합니다. 이 함수는 Laravel의 복수형 처리기가 지원하는 모든 언어를 지원합니다:
use Illuminate\Support\Str;
$singular = Str::singular('cars');
// car
$singular = Str::singular('children');
// child
Str::slug() {.collection-method}
Str::slug 메서드는 주어진 문자열로부터 URL 친화적인 “슬러그”를 생성합니다:
use Illuminate\Support\Str;
$slug = Str::slug('Laravel 5 Framework', '-');
// laravel-5-framework
Str::snake() {.collection-method}
Str::snake 방법은 주어진 문자열을 snake_case로 변환합니다:
use Illuminate\Support\Str;
$converted = Str::snake('fooBar');
// foo_bar
$converted = Str::snake('fooBar', '-');
// foo-bar
Str::squish() {.collection-method}
Str::squish 메서드는 단어 사이의 불필요한 공백을 포함하여 문자열에서 모든 불필요한 공백을 제거합니다:
use Illuminate\Support\Str;
$string = Str::squish(' laravel framework ');
// laravel framework
Str::start() {.collection-method}
Str::start 메서드는 문자열이 이미 해당 값으로 시작하지 않는 경우 주어진 값을 한 번 추가합니다:
use Illuminate\Support\Str;
$adjusted = Str::start('this/string', '/');
// /this/string
$adjusted = Str::start('/this/string', '/');
// /this/string
Str::startsWith() {.collection-method}
Str::startsWith 방법은 주어진 문자열이 주어진 값으로 시작하는지 여부를 결정합니다:
use Illuminate\Support\Str;
$result = Str::startsWith('This is my name', 'This');
// true
만약 가능한 값들의 배열이 전달되면, 문자열이 주어진 값들 중 어느 하나로 시작할 경우 startsWith 메서드는 true를 반환합니다:
$result = Str::startsWith('This is my name', ['This', 'That', 'There']);
// true
Str::studly() {.collection-method}
Str::studly 방법은 주어진 문자열을 StudlyCase로 변환합니다:
use Illuminate\Support\Str;
$converted = Str::studly('foo_bar');
// FooBar
Str::substr() {.collection-method}
Str::substr 메서드는 시작 및 길이 매개변수로 지정된 문자열의 일부를 반환합니다:
use Illuminate\Support\Str;
$converted = Str::substr('The Laravel Framework', 4, 7);
// Laravel
Str::substrCount() {.collection-method}
Str::substrCount 메서드는 주어진 문자열에서 특정 값이 나타나는 횟수를 반환합니다:
use Illuminate\Support\Str;
$count = Str::substrCount('If you like ice cream, you will like snow cones.', 'like');
// 2
Str::substrReplace() {.collection-method}
Str::substrReplace 메서드는 문자열의 일부를 교체하는데, 세 번째 인자로 지정된 위치에서 시작하여 네 번째 인자로 지정된 문자 수를 교체합니다. 메서드의 네 번째 인자에 0을 전달하면 문자열의 기존 문자를 교체하지 않고 지정된 위치에 문자열을 삽입합니다:
use Illuminate\Support\Str;
$result = Str::substrReplace('1300', ':', 2);
// 13:
$result = Str::substrReplace('1300', ':', 2, 0);
// 13:00
Str::swap() {.collection-method}
Str::swap 메서드는 PHP의 strtr 함수를 사용하여 주어진 문자열에서 여러 값을 교체합니다:
use Illuminate\Support\Str;
$string = Str::swap([
'Tacos' => 'Burritos',
'great' => 'fantastic',
], 'Tacos are great!');
// Burritos are fantastic!
Str::take() {.collection-method}
Str::take 메서드는 문자열의 시작 부분에서 지정된 수의 문자를 반환합니다:
use Illuminate\Support\Str;
$taken = Str::take('Build something amazing!', 5);
// Build
Str::title() {.collection-method}
Str::title 방법은 주어진 문자열을 Title Case로 변환합니다:
use Illuminate\Support\Str;
$converted = Str::title('a nice title uses the correct case');
// A Nice Title Uses The Correct Case
Str::toBase64() {.collection-method}
Str::toBase64 방법은 주어진 문자열을 Base64로 변환합니다:
use Illuminate\Support\Str;
$base64 = Str::toBase64('Laravel');
// TGFyYXZlbA==
Str::transliterate() {.collection-method}
Str::transliterate 방법은 주어진 문자열을 가장 가까운 ASCII 표현으로 변환하려고 시도할 것입니다:
use Illuminate\Support\Str;
$email = Str::transliterate('ⓣⓔⓢⓣ@ⓛⓐⓡⓐⓥⓔⓛ.ⓒⓞⓜ');
// 'test@laravel.com'
Str::trim() {.collection-method}
Str::trim 메서드는 주어진 문자열의 시작과 끝에서 공백(또는 다른 문자)을 제거합니다. PHP의 기본 trim 함수와 달리, Str::trim 메서드는 유니코드 공백 문자도 제거합니다:
use Illuminate\Support\Str;
$string = Str::trim(' foo bar ');
// 'foo bar'
Str::ltrim() {.collection-method}
Str::ltrim 메서드는 주어진 문자열의 시작 부분에서 공백(또는 다른 문자)을 제거합니다. PHP의 기본 ltrim 함수와 달리, Str::ltrim 메서드는 유니코드 공백 문자도 제거합니다:
use Illuminate\Support\Str;
$string = Str::ltrim(' foo bar ');
// 'foo bar '
Str::rtrim() {.collection-method}
Str::rtrim 메서드는 주어진 문자열의 끝에서 공백(또는 다른 문자)을 제거합니다. PHP의 기본 rtrim 함수와 달리, Str::rtrim 메서드는 유니코드 공백 문자도 제거합니다:
use Illuminate\Support\Str;
$string = Str::rtrim(' foo bar ');
// ' foo bar'
Str::ucfirst() {.collection-method}
Str::ucfirst 방법은 주어진 문자열의 첫 글자를 대문자로 바꾸어 반환합니다:
use Illuminate\Support\Str;
$string = Str::ucfirst('foo bar');
// Foo bar
Str::ucsplit() {.collection-method}
Str::ucsplit 방법은 주어진 문자열을 대문자 문자로 배열로 분할합니다:
use Illuminate\Support\Str;
$segments = Str::ucsplit('FooBar');
// [0 => 'Foo', 1 => 'Bar']
Str::ucwords() {.collection-method}
Str::ucwords 메서드는 주어진 문자열의 각 단어의 첫 글자를 대문자로 변환합니다:
use Illuminate\Support\Str;
$string = Str::ucwords('laravel framework');
// Laravel Framework
Str::upper() {.collection-method}
Str::upper 메서드는 주어진 문자열을 대문자로 변환합니다:
use Illuminate\Support\Str;
$string = Str::upper('laravel');
// LARAVEL
Str::ulid() {.collection-method}
Str::ulid 방법은 ULID를 생성합니다. ULID는 작고, 시간 순서가 있는 고유 식별자입니다:
use Illuminate\Support\Str;
return (string) Str::ulid();
// 01gd6r360bp37zj17nxb55yv40
주어진 ULID가 생성된 날짜와 시간을 나타내는 Illuminate\Support\Carbon 날짜 인스턴스를 가져오려면 Laravel의 Carbon 통합에서 제공하는 createFromId 메서드를 사용할 수 있습니다:
use Illuminate\Support\Carbon;
use Illuminate\Support\Str;
$date = Carbon::createFromId((string) Str::ulid());
테스트 중에는 Str::ulid 메서드가 반환하는 값을 ‘가짜’로 만드는 것이 유용할 수 있습니다. 이를 달성하기 위해 createUlidsUsing 메서드를 사용할 수 있습니다:
use Symfony\Component\Uid\Ulid;
Str::createUlidsUsing(function () {
return new Ulid('01HRDBNHHCKNW2AK4Z29SN82T9');
});
ulid 방법이 ULID 생성을 정상적으로 다시 수행하도록 지시하려면, createUlidsNormally 방법을 호출할 수 있습니다:
Str::createUlidsNormally();
Str::unwrap() {.collection-method}
Str::unwrap 메서드는 주어진 문자열의 시작과 끝에서 지정된 문자열을 제거합니다:
use Illuminate\Support\Str;
Str::unwrap('-Laravel-', '-');
// Laravel
Str::unwrap('{framework: "Laravel"}', '{', '}');
// framework: "Laravel"
Str::uuid() {.collection-method}
Str::uuid 방법은 UUID(버전 4)를 생성합니다:
use Illuminate\Support\Str;
return (string) Str::uuid();
테스트 중에는 Str::uuid 메서드가 반환하는 값을 ‘가짜’로 만드는 것이 유용할 수 있습니다. 이를 달성하기 위해 createUuidsUsing 메서드를 사용할 수 있습니다:
use Ramsey\Uuid\Uuid;
Str::createUuidsUsing(function () {
return Uuid::fromString('eadbfeac-5258-45c2-bab7-ccb9b5ef74f9');
});
uuid 방법이 정상적으로 UUID를 생성하도록 지시하려면, createUuidsNormally 방법을 호출할 수 있습니다:
Str::createUuidsNormally();
Str::uuid7() {.collection-method}
Str::uuid7 방법은 UUID(버전 7)를 생성합니다:
use Illuminate\Support\Str;
return (string) Str::uuid7();
DateTimeInterface는 선택적 매개변수로 전달될 수 있으며, 이는 순서화된 UUID를 생성하는 데 사용됩니다:
return (string) Str::uuid7(time: now());
Str::wordCount() {.collection-method}
Str::wordCount 메서드는 문자열이 포함하는 단어의 수를 반환합니다:
use Illuminate\Support\Str;
Str::wordCount('Hello, world!'); // 2
Str::wordWrap() {.collection-method}
Str::wordWrap 메서드는 문자열을 주어진 문자 수로 감쌉니다:
use Illuminate\Support\Str;
$text = "The quick brown fox jumped over the lazy dog.";
Str::wordWrap($text, characters: 20, break: "<br />\n");
/*
The quick brown fox<br />
jumped over the lazy<br />
dog.
*/
Str::words() {.collection-method}
Str::words 메서드는 문자열의 단어 수를 제한합니다. 이 메서드에 세 번째 인수로 추가 문자열을 전달하여 잘린 문자열의 끝에 어떤 문자열을 추가할지 지정할 수 있습니다:
use Illuminate\Support\Str;
return Str::words('Perfectly balanced, as all things should be.', 3, ' >>>');
// Perfectly balanced, as >>>
Str::wrap() {.collection-method}
Str::wrap 메서드는 주어진 문자열을 추가 문자열이나 문자열 쌍으로 감쌉니다:
use Illuminate\Support\Str;
Str::wrap('Laravel', '"');
// "Laravel"
Str::wrap('is', before: 'This ', after: ' Laravel!');
// This is Laravel!
str() {.collection-method}
str 함수는 주어진 문자열의 새로운 Illuminate\Support\Stringable 인스턴스를 반환합니다. 이 함수는 Str::of 메서드와 동일합니다:
$string = str('Taylor')->append(' Otwell');
// 'Taylor Otwell'
str 함수에 인수가 제공되지 않으면, 함수는 Illuminate\Support\Str의 인스턴스를 반환합니다:
$snake = str()->snake('FooBar');
// 'foo_bar'
trans() {.collection-method}
trans 함수는 제공된 번역 키를 언어 파일을 사용하여 번역합니다:
echo trans('messages.welcome');
지정된 번역 키가 존재하지 않으면, trans 함수는 주어진 키를 반환합니다. 따라서 위의 예를 사용하면, trans 함수는 번역 키가 존재하지 않을 경우 messages.welcome를 반환합니다.
trans_choice() {.collection-method}
trans_choice 함수는 주어진 번역 키를 어미 변화와 함께 번역합니다:
echo trans_choice('messages.notifications', $unreadCount);
지정된 번역 키가 존재하지 않는 경우, trans_choice 함수는 주어진 키를 반환합니다. 따라서 위의 예제를 사용하면, trans_choice 함수는 번역 키가 존재하지 않을 경우 messages.notifications를 반환합니다.
유창한 문자열
유창한 문자열은 문자열 값을 다루기 위한 더 유창한 객체 지향 인터페이스를 제공하며, 전통적인 문자열 조작과 비교하여 더 읽기 쉬운 구문을 사용하여 여러 문자열 연산을 함께 연결할 수 있습니다.
after {.collection-method}
after 메서드는 문자열에서 주어진 값 이후의 모든 내용을 반환합니다. 문자열 내에 값이 존재하지 않으면 전체 문자열이 반환됩니다:
use Illuminate\Support\Str;
$slice = Str::of('This is my name')->after('This is');
// ' my name'
afterLast {.collection-method}
afterLast 메서드는 문자열에서 주어진 값이 마지막으로 나타난 이후의 모든 것을 반환합니다. 값이 문자열 내에 존재하지 않으면 전체 문자열이 반환됩니다:
use Illuminate\Support\Str;
$slice = Str::of('App\Http\Controllers\Controller')->afterLast('\\');
// 'Controller'
apa {.collection-method}
apa 방법은 주어진 문자열을 APA 지침에 따라 제목 대문자로 변환합니다:
use Illuminate\Support\Str;
$converted = Str::of('a nice title uses the correct case')->apa();
// A Nice Title Uses the Correct Case
append {.collection-method}
append 메서드는 주어진 값을 문자열에 추가합니다:
use Illuminate\Support\Str;
$string = Str::of('Taylor')->append(' Otwell');
// 'Taylor Otwell'
ascii {.collection-method}
ascii 방법은 문자열을 ASCII 값으로 음역하려고 시도할 것입니다:
use Illuminate\Support\Str;
$string = Str::of('ü')->ascii();
// 'u'
basename {.collection-method}
basename 방법은 주어진 문자열의 마지막 이름 구성 요소를 반환합니다:
use Illuminate\Support\Str;
$string = Str::of('/foo/bar/baz')->basename();
// 'baz'
필요한 경우, 끝 부분 구성 요소에서 제거될 ‘확장자’를 제공할 수 있습니다:
use Illuminate\Support\Str;
$string = Str::of('/foo/bar/baz.jpg')->basename('.jpg');
// 'baz'
before {.collection-method}
before 메서드는 문자열에서 주어진 값 이전의 모든 것을 반환합니다:
use Illuminate\Support\Str;
$slice = Str::of('This is my name')->before('my name');
// 'This is '
beforeLast {.collection-method}
beforeLast 메서드는 문자열에서 주어진 값이 마지막으로 나타나기 전의 모든 것을 반환합니다:
use Illuminate\Support\Str;
$slice = Str::of('This is my name')->beforeLast('is');
// 'This '
between {.collection-method}
between 메서드는 두 값 사이의 문자열 부분을 반환합니다:
use Illuminate\Support\Str;
$converted = Str::of('This is my name')->between('This', 'name');
// ' is my '
betweenFirst {.collection-method}
betweenFirst 메서드는 두 값 사이의 문자열에서 가능한 가장 작은 부분을 반환합니다:
use Illuminate\Support\Str;
$converted = Str::of('[a] bc [d]')->betweenFirst('[', ']');
// 'a'
camel {.collection-method}
camel 방법은 주어진 문자열을 camelCase로 변환합니다:
use Illuminate\Support\Str;
$converted = Str::of('foo_bar')->camel();
// 'fooBar'
charAt {.collection-method}
charAt 메서드는 지정된 인덱스의 문자를 반환합니다. 인덱스가 범위를 벗어나면 false가 반환됩니다:
use Illuminate\Support\Str;
$character = Str::of('This is my name.')->charAt(6);
// 's'
classBasename {.collection-method}
classBasename 메서드는 주어진 클래스의 네임스페이스를 제거한 클래스 이름을 반환합니다:
use Illuminate\Support\Str;
$class = Str::of('Foo\Bar\Baz')->classBasename();
// 'Baz'
chopStart {.collection-method}
chopStart 방법은 값이 문자열의 시작 부분에 나타날 경우에만 주어진 값의 첫 번째 발생을 제거합니다:
use Illuminate\Support\Str;
$url = Str::of('https://laravel.com')->chopStart('https://');
// 'laravel.com'
배열을 전달할 수도 있습니다. 문자열이 배열의 값 중 하나로 시작하면 해당 값이 문자열에서 제거됩니다:
use Illuminate\Support\Str;
$url = Str::of('http://laravel.com')->chopStart(['https://', 'http://']);
// 'laravel.com'
chopEnd {.collection-method}
chopEnd 방법은 주어진 값이 문자열의 끝에 나타나는 경우에만 마지막 발생을 제거합니다:
use Illuminate\Support\Str;
$url = Str::of('https://laravel.com')->chopEnd('.com');
// 'https://laravel'
배열을 전달할 수도 있습니다. 문자열이 배열의 값 중 하나로 끝나면, 그 값이 문자열에서 제거됩니다:
use Illuminate\Support\Str;
$url = Str::of('http://laravel.com')->chopEnd(['.com', '.io']);
// 'http://laravel'
contains {.collection-method}
contains 방법은 주어진 문자열에 주어진 값이 포함되어 있는지를 결정합니다. 기본적으로 이 방법은 대소문자를 구분합니다:
use Illuminate\Support\Str;
$contains = Str::of('This is my name')->contains('my');
// true
주어진 문자열이 배열의 값 중 어느 것이라도 포함하고 있는지 확인하기 위해 값 배열을 전달할 수도 있습니다:
use Illuminate\Support\Str;
$contains = Str::of('This is my name')->contains(['my', 'foo']);
// true
ignoreCase 인수를 true로 설정하여 대소문자 구분을 비활성화할 수 있습니다:
use Illuminate\Support\Str;
$contains = Str::of('This is my name')->contains('MY', ignoreCase: true);
// true
containsAll {.collection-method}
containsAll 메서드는 주어진 문자열이 주어진 배열의 모든 값을 포함하고 있는지 확인합니다:
use Illuminate\Support\Str;
$containsAll = Str::of('This is my name')->containsAll(['my', 'name']);
// true
ignoreCase 인수를 true로 설정하여 대소문자 구분을 비활성화할 수 있습니다:
use Illuminate\Support\Str;
$containsAll = Str::of('This is my name')->containsAll(['MY', 'NAME'], ignoreCase: true);
// true
decrypt {.collection-method}
decrypt 방법은 암호화된 문자열을 복호화합니다:
use Illuminate\Support\Str;
$decrypted = $encrypted->decrypt();
// 'secret'
decrypt의 역을 보려면 encrypt 메서드를 참조하세요.
deduplicate {.collection-method}
deduplicate 메서드는 주어진 문자열에서 연속적으로 나타나는 문자를 해당 문자의 한 번만으로 교체합니다. 기본적으로 이 메서드는 공백을 중복 제거합니다:
use Illuminate\Support\Str;
$result = Str::of('The Laravel Framework')->deduplicate();
// The Laravel Framework
두 번째 인수로 메서드에 전달하여 중복 제거할 다른 문자를 지정할 수 있습니다:
use Illuminate\Support\Str;
$result = Str::of('The---Laravel---Framework')->deduplicate('-');
// The-Laravel-Framework
dirname {.collection-method}
dirname 메서드는 주어진 문자열의 상위 디렉터리 부분을 반환합니다:
use Illuminate\Support\Str;
$string = Str::of('/foo/bar/baz')->dirname();
// '/foo/bar'
필요한 경우, 문자열에서 제거하고자 하는 디렉터리 수준의 수를 지정할 수 있습니다:
use Illuminate\Support\Str;
$string = Str::of('/foo/bar/baz')->dirname(2);
// '/foo'
doesntContain() {.collection-method}
doesntContain 메서드는 주어진 문자열이 주어진 값을 포함하지 않는지 여부를 결정합니다. 이 메서드는 contains 메서드의 반대입니다. 기본적으로 이 메서드는 대소문자를 구분합니다:
use Illuminate\Support\Str;
$doesntContain = Str::of('This is name')->doesntContain('my');
// true
주어진 문자열이 배열 내의 어떤 값도 포함하지 않는지 확인하기 위해 값들의 배열을 전달할 수도 있습니다:
use Illuminate\Support\Str;
$doesntContain = Str::of('This is name')->doesntContain(['my', 'framework']);
// true
ignoreCase 인수를 true로 설정하여 대소문자 구분을 비활성화할 수 있습니다:
use Illuminate\Support\Str;
$doesntContain = Str::of('This is my name')->doesntContain('MY', ignoreCase: true);
// false
doesntEndWith {.collection-method}
doesntEndWith 메서드는 주어진 문자열이 주어진 값으로 끝나지 않는지 여부를 결정합니다:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->doesntEndWith('dog');
// true
주어진 문자열이 배열 내의 어떤 값으로도 끝나지 않는지 확인하기 위해 값들의 배열을 전달할 수도 있습니다:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->doesntEndWith(['this', 'foo']);
// true
$result = Str::of('This is my name')->doesntEndWith(['name', 'foo']);
// false
doesntStartWith {.collection-method}
doesntStartWith 메서드는 주어진 문자열이 주어진 값으로 시작하지 않는지 여부를 결정합니다:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->doesntStartWith('That');
// true
주어진 문자열이 배열의 어떤 값으로도 시작하지 않는지 확인하기 위해 값들의 배열을 전달할 수도 있습니다:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->doesntStartWith(['What', 'That', 'There']);
// true
encrypt {.collection-method}
encrypt 방법은 문자열을 암호화합니다:
use Illuminate\Support\Str;
$encrypted = Str::of('secret')->encrypt();
encrypt의 역을 원하면 decrypt 메서드를 참조하세요.
endsWith {.collection-method}
endsWith 메서드는 주어진 문자열이 주어진 값으로 끝나는지 여부를 결정합니다:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->endsWith('name');
// true
주어진 문자열이 배열의 값 중 어느 것으로 끝나는지 확인하기 위해 값 배열을 전달할 수도 있습니다:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->endsWith(['name', 'foo']);
// true
$result = Str::of('This is my name')->endsWith(['this', 'foo']);
// false
exactly {.collection-method}
exactly 메서드는 주어진 문자열이 다른 문자열과 정확히 일치하는지 여부를 결정합니다:
use Illuminate\Support\Str;
$result = Str::of('Laravel')->exactly('Laravel');
// true
excerpt {.collection-method}
excerpt 방법은 문자열 내에서 해당 문자열 안의 문구 중 첫 번째 일치 항목과 일치하는 발췌를 추출합니다:
use Illuminate\Support\Str;
$excerpt = Str::of('This is my name')->excerpt('my', [
'radius' => 3
]);
// '...is my na...'
기본값이 100인 radius 옵션은 잘린 문자열 양쪽에 표시될 문자 수를 정의할 수 있게 합니다.
또한, omission 옵션을 사용하여 잘린 문자열 앞뒤에 추가될 문자열을 변경할 수 있습니다:
use Illuminate\Support\Str;
$excerpt = Str::of('This is my name')->excerpt('name', [
'radius' => 3,
'omission' => '(...) '
]);
// '(...) my name'
explode {.collection-method}
explode 방법은 주어진 구분자로 문자열을 나누고, 나눠진 문자열의 각 부분을 포함하는 컬렉션을 반환합니다:
use Illuminate\Support\Str;
$collection = Str::of('foo bar baz')->explode(' ');
// collect(['foo', 'bar', 'baz'])
finish {.collection-method}
finish 메서드는 문자열이 이미 그 값으로 끝나지 않는 경우 주어진 값을 한 번만 문자열에 추가합니다:
use Illuminate\Support\Str;
$adjusted = Str::of('this/string')->finish('/');
// this/string/
$adjusted = Str::of('this/string/')->finish('/');
// this/string/
fromBase64 {.collection-method}
fromBase64 방법은 주어진 Base64 문자열을 디코딩합니다:
use Illuminate\Support\Str;
$decoded = Str::of('TGFyYXZlbA==')->fromBase64();
// Laravel
hash {.collection-method}
hash 메서드는 주어진 알고리즘을 사용하여 문자열을 해시합니다:
use Illuminate\Support\Str;
$hashed = Str::of('secret')->hash(algorithm: 'sha256');
// '2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b'
headline {.collection-method}
headline 방법은 대소문자, 하이픈, 또는 밑줄로 구분된 문자열을 각 단어의 첫 글자를 대문자로 하여 공백으로 구분된 문자열로 변환합니다:
use Illuminate\Support\Str;
$headline = Str::of('taylor_otwell')->headline();
// Taylor Otwell
$headline = Str::of('EmailNotificationSent')->headline();
// Email Notification Sent
initials {.collection-method}
initials 방법은 문자열을 각 단어의 머리글자로 변환합니다:
use Illuminate\Support\Str;
$initials = Str::of('Taylor Otwell')->initials()->upper();
// TO
inlineMarkdown {.collection-method}
inlineMarkdown 방법은 CommonMark를 사용하여 GitHub 스타일의 마크다운을 인라인 HTML로 변환합니다. 그러나 markdown 방법과 달리, 생성된 모든 HTML을 블록 수준 요소로 감싸지 않습니다:
use Illuminate\Support\Str;
$html = Str::of('**Laravel**')->inlineMarkdown();
// <strong>Laravel</strong>
마크다운 보안
기본적으로 마크다운은 원시 HTML을 지원하며, 이는 사용자의 원시 입력과 함께 사용할 때 교차 사이트 스크립팅(XSS) 취약성을 노출할 수 있습니다. CommonMark 보안 문서에 따르면, 원시 HTML을 이스케이프하거나 제거하려면 html_input 옵션을 사용할 수 있으며, 안전하지 않은 링크 허용 여부를 지정하려면 allow_unsafe_links 옵션을 사용할 수 있습니다. 일부 원시 HTML을 허용해야 하는 경우, 컴파일된 마크다운을 HTML 정리기(HTML Purifier)를 통해 처리해야 합니다:
use Illuminate\Support\Str;
Str::of('Inject: <script>alert("Hello XSS!");</script>')->inlineMarkdown([
'html_input' => 'strip',
'allow_unsafe_links' => false,
]);
// Inject: alert("Hello XSS!");
is {.collection-method}
is 방법은 주어진 문자열이 주어진 패턴과 일치하는지 여부를 결정합니다. 별표(*)는 와일드카드 값으로 사용할 수 있습니다.
use Illuminate\Support\Str;
$matches = Str::of('foobar')->is('foo*');
// true
$matches = Str::of('foobar')->is('baz*');
// false
isAscii {.collection-method}
isAscii 메서드는 주어진 문자열이 ASCII 문자열인지 여부를 결정합니다:
use Illuminate\Support\Str;
$result = Str::of('Taylor')->isAscii();
// true
$result = Str::of('ü')->isAscii();
// false
isEmpty {.collection-method}
isEmpty 메서드는 주어진 문자열이 비어 있는지 확인합니다:
use Illuminate\Support\Str;
$result = Str::of(' ')->trim()->isEmpty();
// true
$result = Str::of('Laravel')->trim()->isEmpty();
// false
isNotEmpty {.collection-method}
isNotEmpty 방법은 주어진 문자열이 비어 있지 않은지 확인합니다:
use Illuminate\Support\Str;
$result = Str::of(' ')->trim()->isNotEmpty();
// false
$result = Str::of('Laravel')->trim()->isNotEmpty();
// true
isJson {.collection-method}
isJson 메서드는 주어진 문자열이 유효한 JSON인지 확인합니다:
use Illuminate\Support\Str;
$result = Str::of('[1,2,3]')->isJson();
// true
$result = Str::of('{"first": "John", "last": "Doe"}')->isJson();
// true
$result = Str::of('{first: "John", last: "Doe"}')->isJson();
// false
isUlid {.collection-method}
isUlid 방법은 주어진 문자열이 ULID인지 여부를 결정합니다:
use Illuminate\Support\Str;
$result = Str::of('01gd6r360bp37zj17nxb55yv40')->isUlid();
// true
$result = Str::of('Taylor')->isUlid();
// false
isUrl {.collection-method}
isUrl 메서드는 주어진 문자열이 URL인지 여부를 결정합니다:
use Illuminate\Support\Str;
$result = Str::of('http://example.com')->isUrl();
// true
$result = Str::of('Taylor')->isUrl();
// false
isUrl 방법은 광범위한 프로토콜을 유효한 것으로 간주합니다. 그러나 isUrl 방법에 프로토콜을 제공하여 어떤 프로토콜을 유효하게 간주할지 지정할 수 있습니다:
$result = Str::of('http://example.com')->isUrl(['http', 'https']);
isUuid {.collection-method}
isUuid 메서드는 주어진 문자열이 UUID인지 여부를 결정합니다:
use Illuminate\Support\Str;
$result = Str::of('5ace9ab9-e9cf-4ec6-a19d-5881212a452c')->isUuid();
// true
$result = Str::of('Taylor')->isUuid();
// false
주어진 UUID가 버전(1, 3, 4, 5, 6, 7, 또는 8)에 따른 UUID 사양과 일치하는지 확인할 수도 있습니다:
use Illuminate\Support\Str;
$isUuid = Str::of('a0a2a2d2-0b87-4a18-83f2-2529882be2de')->isUuid(version: 4);
// true
$isUuid = Str::of('a0a2a2d2-0b87-4a18-83f2-2529882be2de')->isUuid(version: 1);
// false
kebab {.collection-method}
kebab 방법은 주어진 문자열을 kebab-case로 변환합니다:
use Illuminate\Support\Str;
$converted = Str::of('fooBar')->kebab();
// foo-bar
lcfirst {.collection-method}
lcfirst 메서드는 주어진 문자열의 첫 번째 문자를 소문자로 변환하여 반환합니다:
use Illuminate\Support\Str;
$string = Str::of('Foo Bar')->lcfirst();
// foo Bar
length {.collection-method}
length 메서드는 주어진 문자열의 길이를 반환합니다:
use Illuminate\Support\Str;
$length = Str::of('Laravel')->length();
// 7
limit {.collection-method}
limit 메서드는 주어진 문자열을 지정된 길이로 잘라냅니다:
use Illuminate\Support\Str;
$truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20);
// The quick brown fox...
자른 문자열의 끝에 추가될 문자열을 변경하려면 두 번째 인수를 전달할 수도 있습니다:
$truncated = Str::of('The quick brown fox jumps over the lazy dog')->limit(20, ' (...)');
// The quick brown fox (...)
문자열을 잘라낼 때 전체 단어를 유지하고 싶다면 preserveWords 인수를 사용할 수 있습니다. 이 인수가 true일 경우, 문자열은 가장 가까운 전체 단어 경계까지 잘려집니다:
$truncated = Str::of('The quick brown fox')->limit(12, preserveWords: true);
// The quick...
lower {.collection-method}
lower 메서드는 주어진 문자열을 소문자로 변환합니다:
use Illuminate\Support\Str;
$result = Str::of('LARAVEL')->lower();
// 'laravel'
markdown {.collection-method}
markdown 방법은 GitHub 스타일의 Markdown을 HTML로 변환합니다:
use Illuminate\Support\Str;
$html = Str::of('# Laravel')->markdown();
// <h1>Laravel</h1>
$html = Str::of('# Taylor <b>Otwell</b>')->markdown([
'html_input' => 'strip',
]);
// <h1>Taylor Otwell</h1>
마크다운 보안
기본적으로 마크다운은 원시 HTML을 지원하며, 이는 사용자의 원시 입력과 함께 사용할 때 교차 사이트 스크립팅(XSS) 취약성을 노출할 수 있습니다. CommonMark 보안 문서에 따르면, 원시 HTML을 이스케이프하거나 제거하려면 html_input 옵션을 사용할 수 있으며, 안전하지 않은 링크 허용 여부를 지정하려면 allow_unsafe_links 옵션을 사용할 수 있습니다. 일부 원시 HTML을 허용해야 하는 경우, 컴파일된 마크다운을 HTML 정리기(HTML Purifier)를 통해 처리해야 합니다:
use Illuminate\Support\Str;
Str::of('Inject: <script>alert("Hello XSS!");</script>')->markdown([
'html_input' => 'strip',
'allow_unsafe_links' => false,
]);
// <p>Inject: alert("Hello XSS!");</p>
mask {.collection-method}
mask 방법은 문자열의 일부를 반복된 문자로 가리며, 이메일 주소나 전화번호와 같은 문자열의 일부를 난독화하는 데 사용할 수 있습니다:
use Illuminate\Support\Str;
$string = Str::of('taylor@example.com')->mask('*', 3);
// tay***************
필요한 경우, mask 메서드에 세 번째 또는 네 번째 인수로 음수를 제공할 수 있으며, 이는 메서드가 문자열 끝에서 주어진 거리만큼 떨어진 지점부터 마스킹을 시작하도록 지시합니다:
$string = Str::of('taylor@example.com')->mask('*', -15, 3);
// tay***@example.com
$string = Str::of('taylor@example.com')->mask('*', 4, -4);
// tayl**********.com
match {.collection-method}
match 메서드는 주어진 정규 표현식 패턴과 일치하는 문자열의 일부를 반환합니다:
use Illuminate\Support\Str;
$result = Str::of('foo bar')->match('/bar/');
// 'bar'
$result = Str::of('foo bar')->match('/foo (.*)/');
// 'bar'
matchAll {.collection-method}
matchAll 메서드는 주어진 정규 표현식 패턴과 일치하는 문자열의 부분들을 포함하는 컬렉션을 반환합니다:
use Illuminate\Support\Str;
$result = Str::of('bar foo bar')->matchAll('/bar/');
// collect(['bar', 'bar'])
표현식 내에서 일치 그룹을 지정하면, Laravel은 첫 번째 일치 그룹의 매치들의 컬렉션을 반환합니다:
use Illuminate\Support\Str;
$result = Str::of('bar fun bar fly')->matchAll('/f(\w*)/');
// collect(['un', 'ly']);
일치하는 항목이 없으면 빈 컬렉션이 반환됩니다.
isMatch {.collection-method}
isMatch 메서드는 문자열이 주어진 정규식과 일치하면 true를 반환합니다:
use Illuminate\Support\Str;
$result = Str::of('foo bar')->isMatch('/foo (.*)/');
// true
$result = Str::of('laravel')->isMatch('/foo (.*)/');
// false
newLine {.collection-method}
newLine 방법은 문자열 끝에 ‘줄 끝’ 문자를 추가합니다:
use Illuminate\Support\Str;
$padded = Str::of('Laravel')->newLine()->append('Framework');
// 'Laravel
// Framework'
padBoth {.collection-method}
padBoth 메서드는 PHP의 str_pad 함수를 감싸서, 최종 문자열이 원하는 길이에 도달할 때까지 문자열의 양쪽에 다른 문자열을 채웁니다:
use Illuminate\Support\Str;
$padded = Str::of('James')->padBoth(10, '_');
// '__James___'
$padded = Str::of('James')->padBoth(10);
// ' James '
padLeft {.collection-method}
padLeft 메서드는 PHP의 str_pad 함수를 감싸며, 최종 문자열이 원하는 길이에 도달할 때까지 문자열의 왼쪽을 다른 문자열로 채웁니다:
use Illuminate\Support\Str;
$padded = Str::of('James')->padLeft(10, '-=');
// '-=-=-James'
$padded = Str::of('James')->padLeft(10);
// ' James'
padRight {.collection-method}
padRight 메서드는 PHP의 str_pad 함수를 감싸며, 최종 문자열이 원하는 길이에 도달할 때까지 문자열의 오른쪽을 다른 문자열로 채웁니다:
use Illuminate\Support\Str;
$padded = Str::of('James')->padRight(10, '-');
// 'James-----'
$padded = Str::of('James')->padRight(10);
// 'James '
pipe {.collection-method}
pipe 메서드는 현재 값을 주어진 호출 가능 객체(callable)로 전달하여 문자열을 변환할 수 있게 해줍니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$hash = Str::of('Laravel')->pipe('md5')->prepend('Checksum: ');
// 'Checksum: a5c95b86291ea299fcbe64458ed12702'
$closure = Str::of('foo')->pipe(function (Stringable $str) {
return 'bar';
});
// 'bar'
counted {.collection-method}
counted 방법은 단일 단어 문자열을 주어진 수에 따라 단수 또는 복수 형태로 변환하고 형식화된 수를 결과 앞에 붙입니다:
use Illuminate\Support\Str;
$label = Str::of('order')->counted(1);
// 1 order
$label = Str::of('order')->counted(1000);
// 1,000 orders
plural {.collection-method}
plural 메서드는 단수 단어 문자열을 복수형으로 변환합니다. 이 함수는 Laravel의 복수화 도구에서 지원하는 모든 언어를 지원합니다:
use Illuminate\Support\Str;
$plural = Str::of('car')->plural();
// cars
$plural = Str::of('child')->plural();
// children
함수에 정수 인수를 제공하여 문자열의 단수 또는 복수 형태를 가져올 수 있습니다:
use Illuminate\Support\Str;
$plural = Str::of('child')->plural(2);
// children
$plural = Str::of('child')->plural(1);
// child
형식이 지정된 $count로 복수형 문자열을 접두사하도록 prependCount 인수를 제공할 수 있습니다:
use Illuminate\Support\Str;
$label = Str::of('car')->plural(1000, prependCount: true);
// 1,000 cars
position {.collection-method}
position 메서드는 문자열에서 부분 문자열이 처음 나타나는 위치를 반환합니다. 부분 문자열이 문자열 내에 존재하지 않는 경우, false가 반환됩니다:
use Illuminate\Support\Str;
$position = Str::of('Hello, World!')->position('Hello');
// 0
$position = Str::of('Hello, World!')->position('W');
// 7
prepend {.collection-method}
prepend 방법은 주어진 값을 문자열 앞에 추가합니다:
use Illuminate\Support\Str;
$string = Str::of('Framework')->prepend('Laravel ');
// Laravel Framework
remove {.collection-method}
remove 메서드는 주어진 값이나 값들의 배열을 문자열에서 제거합니다:
use Illuminate\Support\Str;
$string = Str::of('Arkansas is quite beautiful!')->remove('quite ');
// Arkansas is beautiful!
문자열을 제거할 때 대소문자를 무시하려면 두 번째 매개변수로 false를 전달할 수도 있습니다.
repeat {.collection-method}
repeat 메서드는 주어진 문자열을 반복합니다:
use Illuminate\Support\Str;
$repeated = Str::of('a')->repeat(5);
// aaaaa
replace {.collection-method}
replace 메서드는 문자열 내에서 주어진 문자열을 교체합니다:
use Illuminate\Support\Str;
$replaced = Str::of('Laravel 6.x')->replace('6.x', '7.x');
// Laravel 7.x
replace 메서드는 또한 caseSensitive 인수를 허용합니다. 기본적으로 replace 메서드는 대소문자를 구분합니다:
$replaced = Str::of('macOS 13.x')->replace(
'macOS', 'iOS', caseSensitive: false
);
replaceArray {.collection-method}
replaceArray 방법은 배열을 사용하여 문자열의 주어진 값을 순차적으로 교체합니다:
use Illuminate\Support\Str;
$string = 'The event will take place between ? and ?';
$replaced = Str::of($string)->replaceArray('?', ['8:30', '9:00']);
// The event will take place between 8:30 and 9:00
replaceFirst {.collection-method}
replaceFirst 메서드는 문자열에서 주어진 값의 첫 번째 발생을 교체합니다:
use Illuminate\Support\Str;
$replaced = Str::of('the quick brown fox jumps over the lazy dog')->replaceFirst('the', 'a');
// a quick brown fox jumps over the lazy dog
replaceLast {.collection-method}
replaceLast 메서드는 문자열에서 주어진 값의 마지막 발생을 교체합니다:
use Illuminate\Support\Str;
$replaced = Str::of('the quick brown fox jumps over the lazy dog')->replaceLast('the', 'a');
// the quick brown fox jumps over a lazy dog
replaceMatches {.collection-method}
replaceMatches 메서드는 패턴과 일치하는 문자열의 모든 부분을 주어진 대체 문자열로 바꿉니다:
use Illuminate\Support\Str;
$replaced = Str::of('(+1) 501-555-1000')->replaceMatches('/[^A-Za-z0-9]++/', '');
// '15015551000'
replaceMatches 메서드는 또한 주어진 패턴과 일치하는 문자열의 각 부분과 함께 호출될 클로저를 받으며, 이를 통해 클로저 내에서 교체 로직을 수행하고 교체된 값을 반환할 수 있습니다:
use Illuminate\Support\Str;
$replaced = Str::of('123')->replaceMatches('/\d/', function (array $matches) {
return '['.$matches[0].']';
});
// '[1][2][3]'
replaceStart {.collection-method}
replaceStart 방법은 값이 문자열의 시작 부분에 나타날 경우에만 주어진 값의 첫 번째 발생을 교체합니다:
use Illuminate\Support\Str;
$replaced = Str::of('Hello World')->replaceStart('Hello', 'Laravel');
// Laravel World
$replaced = Str::of('Hello World')->replaceStart('World', 'Laravel');
// Hello World
replaceEnd {.collection-method}
replaceEnd 방법은 주어진 값이 문자열의 끝에 나타나는 경우에만 마지막 발생을 교체합니다:
use Illuminate\Support\Str;
$replaced = Str::of('Hello World')->replaceEnd('World', 'Laravel');
// Hello Laravel
$replaced = Str::of('Hello World')->replaceEnd('Hello', 'Laravel');
// Hello World
scan {.collection-method}
scan 메서드는 입력을 문자열에서 sscanf PHP 함수가 지원하는 형식에 따라 컬렉션으로 구문 분석합니다:
use Illuminate\Support\Str;
$collection = Str::of('filename.jpg')->scan('%[^.].%s');
// collect(['filename', 'jpg'])
singular {.collection-method}
singular 메서드는 문자열을 단수형으로 변환합니다. 이 함수는 Laravel의 복수형 처리기가 지원하는 모든 언어를 지원합니다:
use Illuminate\Support\Str;
$singular = Str::of('cars')->singular();
// car
$singular = Str::of('children')->singular();
// child
slug {.collection-method}
slug 메서드는 주어진 문자열로부터 URL 친화적인 “슬러그”를 생성합니다:
use Illuminate\Support\Str;
$slug = Str::of('Laravel Framework')->slug('-');
// laravel-framework
snake {.collection-method}
snake 방법은 주어진 문자열을 snake_case로 변환합니다:
use Illuminate\Support\Str;
$converted = Str::of('fooBar')->snake();
// foo_bar
split {.collection-method}
split 방법은 정규 표현식을 사용하여 문자열을 컬렉션으로 분할합니다:
use Illuminate\Support\Str;
$segments = Str::of('one, two, three')->split('/[\s,]+/');
// collect(["one", "two", "three"])
squish {.collection-method}
squish 메서드는 단어 사이의 불필요한 공백을 포함하여 문자열에서 모든 불필요한 공백을 제거합니다:
use Illuminate\Support\Str;
$string = Str::of(' laravel framework ')->squish();
// laravel framework
start {.collection-method}
start 메서드는 문자열이 이미 그 값으로 시작하지 않는 경우 주어진 값을 한 번 추가합니다:
use Illuminate\Support\Str;
$adjusted = Str::of('this/string')->start('/');
// /this/string
$adjusted = Str::of('/this/string')->start('/');
// /this/string
startsWith {.collection-method}
startsWith 메서드는 주어진 문자열이 주어진 값으로 시작하는지 여부를 결정합니다:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->startsWith('This');
// true
주어진 문자열이 배열의 값 중 어느 하나로 시작하는지 확인하기 위해 값의 배열을 전달할 수도 있습니다:
use Illuminate\Support\Str;
$result = Str::of('This is my name')->startsWith(['This', 'That']);
// true
stripTags {.collection-method}
stripTags 메서드는 문자열에서 모든 HTML 및 PHP 태그를 제거합니다:
use Illuminate\Support\Str;
$result = Str::of('<a href="https://laravel.com">Taylor <b>Otwell</b></a>')->stripTags();
// Taylor Otwell
$result = Str::of('<a href="https://laravel.com">Taylor <b>Otwell</b></a>')->stripTags('<b>');
// Taylor <b>Otwell</b>
studly {.collection-method}
studly 메서드는 주어진 문자열을 StudlyCase로 변환합니다:
use Illuminate\Support\Str;
$converted = Str::of('foo_bar')->studly();
// FooBar
substr {.collection-method}
substr 메서드는 주어진 시작 위치와 길이 매개변수로 지정된 문자열의 일부를 반환합니다:
use Illuminate\Support\Str;
$string = Str::of('Laravel Framework')->substr(8);
// Framework
$string = Str::of('Laravel Framework')->substr(8, 5);
// Frame
substrReplace {.collection-method}
substrReplace 메서드는 문자열의 일부를 두 번째 인수로 지정된 위치에서 시작하여 세 번째 인수로 지정된 문자 수만큼 교체합니다. 메서드의 세 번째 인수로 0를 전달하면 기존 문자열의 문자를 교체하지 않고 지정된 위치에 문자열을 삽입합니다:
use Illuminate\Support\Str;
$string = Str::of('1300')->substrReplace(':', 2);
// 13:
$string = Str::of('The Framework')->substrReplace(' Laravel', 3, 0);
// The Laravel Framework
swap {.collection-method}
swap 메서드는 PHP의 strtr 함수를 사용하여 문자열의 여러 값을 교체합니다:
use Illuminate\Support\Str;
$string = Str::of('Tacos are great!')
->swap([
'Tacos' => 'Burritos',
'great' => 'fantastic',
]);
// Burritos are fantastic!
take {.collection-method}
take 메서드는 문자열의 시작 부분에서 지정된 수의 문자를 반환합니다:
use Illuminate\Support\Str;
$taken = Str::of('Build something amazing!')->take(5);
// Build
tap {.collection-method}
tap 메서드는 문자열을 주어진 클로저에 전달하여 문자열 자체에는 영향을 주지 않으면서 문자열을 검사하고 상호작용할 수 있게 합니다. 클로저가 무엇을 반환하든 원래 문자열은 tap 메서드에 의해 반환됩니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('Laravel')
->append(' Framework')
->tap(function (Stringable $string) {
dump('String after append: '.$string);
})
->upper();
// LARAVEL FRAMEWORK
test {.collection-method}
test 방법은 문자열이 주어진 정규 표현식 패턴과 일치하는지 여부를 결정합니다:
use Illuminate\Support\Str;
$result = Str::of('Laravel Framework')->test('/Laravel/');
// true
title {.collection-method}
title 방법은 주어진 문자열을 Title Case로 변환합니다:
use Illuminate\Support\Str;
$converted = Str::of('a nice title uses the correct case')->title();
// A Nice Title Uses The Correct Case
toBase64 {.collection-method}
toBase64 방법은 주어진 문자열을 Base64로 변환합니다:
use Illuminate\Support\Str;
$base64 = Str::of('Laravel')->toBase64();
// TGFyYXZlbA==
toHtmlString {.collection-method}
toHtmlString 메서드는 주어진 문자열을 Illuminate\Support\HtmlString 인스턴스로 변환하며, Blade 템플릿에서 렌더링될 때 이 인스턴스는 이스케이프되지 않습니다:
use Illuminate\Support\Str;
$htmlString = Str::of('Nuno Maduro')->toHtmlString();
toUri {.collection-method}
toUri 방법은 주어진 문자열을 Illuminate\Support\Uri 인스턴스로 변환합니다:
use Illuminate\Support\Str;
$uri = Str::of('https://example.com')->toUri();
transliterate {.collection-method}
transliterate 방법은 주어진 문자열을 가장 가까운 ASCII 표현으로 변환하려고 시도할 것입니다:
use Illuminate\Support\Str;
$email = Str::of('ⓣⓔⓢⓣ@ⓛⓐⓡⓐⓥⓔⓛ.ⓒⓞⓜ')->transliterate();
// 'test@laravel.com'
trim {.collection-method}
trim 메서드는 주어진 문자열을 다듬습니다. PHP의 기본 trim 함수와 달리, Laravel의 trim 메서드는 유니코드 공백 문자도 제거합니다:
use Illuminate\Support\Str;
$string = Str::of(' Laravel ')->trim();
// 'Laravel'
$string = Str::of('/Laravel/')->trim('/');
// 'Laravel'
ltrim {.collection-method}
ltrim 메서드는 문자열의 왼쪽 부분을 잘라냅니다. PHP의 기본 ltrim 함수와 달리, Laravel의 ltrim 메서드는 유니코드 공백 문자도 제거합니다:
use Illuminate\Support\Str;
$string = Str::of(' Laravel ')->ltrim();
// 'Laravel '
$string = Str::of('/Laravel/')->ltrim('/');
// 'Laravel/'
rtrim {.collection-method}
rtrim 메서드는 주어진 문자열의 오른쪽을 잘라냅니다. PHP의 기본 rtrim 함수와 달리, Laravel의 rtrim 메서드는 유니코드 공백 문자도 제거합니다:
use Illuminate\Support\Str;
$string = Str::of(' Laravel ')->rtrim();
// ' Laravel'
$string = Str::of('/Laravel/')->rtrim('/');
// '/Laravel'
ucfirst {.collection-method}
ucfirst 방법은 주어진 문자열의 첫 글자를 대문자로 바꾸어 반환합니다:
use Illuminate\Support\Str;
$string = Str::of('foo bar')->ucfirst();
// Foo bar
ucsplit {.collection-method}
ucsplit 방법은 주어진 문자열을 대문자 문자로 구분하여 컬렉션으로 나눕니다:
use Illuminate\Support\Str;
$string = Str::of('Foo Bar')->ucsplit();
// collect(['Foo ', 'Bar'])
ucwords {.collection-method}
ucwords 메서드는 주어진 문자열의 각 단어의 첫 글자를 대문자로 변환합니다:
use Illuminate\Support\Str;
$string = Str::of('laravel framework')->ucwords();
// Laravel Framework
unwrap {.collection-method}
unwrap 메서드는 주어진 문자열의 시작과 끝에서 지정된 문자열을 제거합니다:
use Illuminate\Support\Str;
Str::of('-Laravel-')->unwrap('-');
// Laravel
Str::of('{framework: "Laravel"}')->unwrap('{', '}');
// framework: "Laravel"
upper {.collection-method}
upper 메서드는 주어진 문자열을 대문자로 변환합니다:
use Illuminate\Support\Str;
$adjusted = Str::of('laravel')->upper();
// LARAVEL
when {.collection-method}
when 메서드는 주어진 조건이 true일 경우 주어진 클로저를 호출합니다. 클로저는 fluent 문자열 인스턴스를 받게 됩니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('Taylor')
->when(true, function (Stringable $string) {
return $string->append(' Otwell');
});
// 'Taylor Otwell'
필요한 경우, when 메서드의 세 번째 매개변수로 다른 클로저를 전달할 수 있습니다. 이 클로저는 조건 매개변수가 false로 평가될 경우 실행됩니다.
whenContains {.collection-method}
whenContains 메서드는 문자열이 주어진 값을 포함하는 경우 제공된 클로저를 호출합니다. 클로저는 플루언트 문자열 인스턴스를 받게 됩니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('tony stark')
->whenContains('tony', function (Stringable $string) {
return $string->title();
});
// 'Tony Stark'
필요하다면 세 번째 매개변수로 다른 클로저를 전달할 수 있습니다. 문자열에 지정된 값이 포함되지 않은 경우 클로저가 호출됩니다.
또한 배열의 값 중 하나라도 문자열에 포함되어 있는지 확인하기 위해 값 배열을 전달할 수도 있습니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('tony stark')
->whenContains(['tony', 'hulk'], function (Stringable $string) {
return $string->title();
});
// Tony Stark
whenContainsAll {.collection-method}
whenContainsAll 메서드는 문자열이 주어진 모든 하위 문자열을 포함하고 있으면 지정된 클로저를 호출합니다. 클로저는 플루언트 문자열 인스턴스를 받습니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('tony stark')
->whenContainsAll(['tony', 'stark'], function (Stringable $string) {
return $string->title();
});
// 'Tony Stark'
필요한 경우, 세 번째 매개변수로 다른 클로저를 전달할 수 있습니다. 조건 매개변수가 false로 평가되면 클로저가 호출됩니다.
whenDoesntEndWith {.collection-method}
whenDoesntEndWith 메서드는 문자열이 지정된 하위 문자열로 끝나지 않을 경우 주어진 클로저를 호출합니다. 클로저는 fluent 문자열 인스턴스를 받게 됩니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('disney world')->whenDoesntEndWith('land', function (Stringable $string) {
return $string->title();
});
// 'Disney World'
whenDoesntStartWith {.collection-method}
whenDoesntStartWith 메서드는 문자열이 주어진 하위 문자열로 시작하지 않으면 지정된 클로저를 호출합니다. 클로저는 fluent 문자열 인스턴스를 받습니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('disney world')->whenDoesntStartWith('sea', function (Stringable $string) {
return $string->title();
});
// 'Disney World'
whenEmpty {.collection-method}
whenEmpty 메서드는 문자열이 비어 있는 경우 지정된 클로저를 호출합니다. 클로저가 값을 반환하면, 해당 값도 whenEmpty 메서드에 의해 반환됩니다. 클로저가 값을 반환하지 않으면, fluent 문자열 인스턴스가 반환됩니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of(' ')->trim()->whenEmpty(function (Stringable $string) {
return $string->prepend('Laravel');
});
// 'Laravel'
whenNotEmpty {.collection-method}
whenNotEmpty 메서드는 문자열이 비어 있지 않은 경우 주어진 클로저를 호출합니다. 클로저가 값을 반환하면, 그 값도 whenNotEmpty 메서드에 의해 반환됩니다. 클로저가 값을 반환하지 않으면, 유창한 문자열 인스턴스가 반환됩니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('Framework')->whenNotEmpty(function (Stringable $string) {
return $string->prepend('Laravel ');
});
// 'Laravel Framework'
whenStartsWith {.collection-method}
whenStartsWith 메서드는 문자열이 주어진 하위 문자열로 시작하면 지정된 클로저를 호출합니다. 클로저는 플루언트 문자열 인스턴스를 받습니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('disney world')->whenStartsWith('disney', function (Stringable $string) {
return $string->title();
});
// 'Disney World'
whenEndsWith {.collection-method}
whenEndsWith 메서드는 문자열이 주어진 하위 문자열로 끝나면 지정된 클로저를 호출합니다. 클로저는 플루언트 문자열 인스턴스를 받게 됩니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('disney world')->whenEndsWith('world', function (Stringable $string) {
return $string->title();
});
// 'Disney World'
whenExactly {.collection-method}
whenExactly 메서드는 문자열이 주어진 문자열과 정확히 일치할 경우 지정된 클로저를 호출합니다. 클로저는 플루언트 문자열 인스턴스를 받게 됩니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('laravel')->whenExactly('laravel', function (Stringable $string) {
return $string->title();
});
// 'Laravel'
whenNotExactly {.collection-method}
whenNotExactly 메서드는 문자열이 주어진 문자열과 정확히 일치하지 않을 경우 주어진 클로저를 호출합니다. 클로저는 유창한 문자열 인스턴스를 받게 됩니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('framework')->whenNotExactly('laravel', function (Stringable $string) {
return $string->title();
});
// 'Framework'
whenIs {.collection-method}
whenIs 메서드는 문자열이 주어진 패턴과 일치하면 해당 클로저를 호출합니다. 별표(*)는 와일드카드 값으로 사용할 수 있습니다. 클로저는 fluent 문자열 인스턴스를 받습니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('foo/bar')->whenIs('foo/*', function (Stringable $string) {
return $string->append('/baz');
});
// 'foo/bar/baz'
whenIsAscii {.collection-method}
whenIsAscii 메서드는 문자열이 7비트 ASCII인 경우 주어진 클로저를 호출합니다. 클로저는 플루언트 문자열 인스턴스를 받게 됩니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('laravel')->whenIsAscii(function (Stringable $string) {
return $string->title();
});
// 'Laravel'
whenIsUlid {.collection-method}
whenIsUlid 메서드는 문자열이 유효한 ULID인 경우 주어진 클로저를 호출합니다. 클로저는 플루언트 문자열 인스턴스를 받게 됩니다:
use Illuminate\Support\Str;
$string = Str::of('01gd6r360bp37zj17nxb55yv40')->whenIsUlid(function (Stringable $string) {
return $string->substr(0, 8);
});
// '01gd6r36'
whenIsUuid {.collection-method}
whenIsUuid 메서드는 문자열이 유효한 UUID인 경우 주어진 클로저를 호출합니다. 클로저는 유창한 문자열 인스턴스를 받게 됩니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('a0a2a2d2-0b87-4a18-83f2-2529882be2de')->whenIsUuid(function (Stringable $string) {
return $string->substr(0, 8);
});
// 'a0a2a2d2'
whenTest {.collection-method}
whenTest 메서드는 문자열이 주어진 정규 표현식과 일치하면 지정된 클로저를 호출합니다. 클로저는 플루언트 문자열 인스턴스를 받게 됩니다:
use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('laravel framework')->whenTest('/laravel/', function (Stringable $string) {
return $string->title();
});
// 'Laravel Framework'
wordCount {.collection-method}
wordCount 메서드는 문자열이 포함하는 단어의 수를 반환합니다:
use Illuminate\Support\Str;
Str::of('Hello, world!')->wordCount(); // 2
words {.collection-method}
words 방법은 문자열의 단어 수를 제한합니다. 필요하다면 잘린 문자열에 추가로 붙일 문자열을 지정할 수 있습니다:
use Illuminate\Support\Str;
$string = Str::of('Perfectly balanced, as all things should be.')->words(3, ' >>>');
// Perfectly balanced, as >>>
wrap {.collection-method}
wrap 메서드는 주어진 문자열을 추가 문자열이나 문자열 쌍으로 감쌉니다:
use Illuminate\Support\Str;
Str::of('Laravel')->wrap('"');
// "Laravel"
Str::is('is')->wrap(before: 'This ', after: ' Laravel!');
// This is Laravel!