Skip to content

문자열

소개

Laravel은 문자열 값을 조작하기 위한 다양한 함수를 포함하고 있습니다. 이러한 함수 중 다수는 프레임워크 자체에서 사용되지만, 편하다고 생각되면 여러분의 애플리케이션에서 자유롭게 사용할 수 있습니다.

사용 가능한 메서드

문자열

Fluent 문자열

문자열

__()

__ 함수는 주어진 번역 문자열 또는 번역 키를 언어 파일을 사용하여 번역합니다:

echo __('Welcome to our application');
echo __('messages.welcome');

지정된 번역 문자열 또는 키가 존재하지 않으면 __ 함수는 주어진 값을 반환합니다. 따라서 위의 예시에서 __ 함수는 해당 번역 키가 존재하지 않으면 messages.welcome을 반환합니다.

class_basename()

class_basename 함수는 주어진 클래스의 클래스 이름을 클래스의 네임스페이스를 제거하여 반환합니다:

$class = class_basename('Foo\Bar\Baz');
// Baz

e()

e 함수는 PHP의 htmlspecialchars 함수를 기본적으로 double_encode 옵션을 true로 설정하여 실행합니다:

echo e('<html>foo</html>');
// &lt;html&gt;foo&lt;/html&gt;

preg_replace_array()

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()

Str::after 메서드는 문자열에서 주어진 값 이후의 모든 것을 반환합니다. 값이 문자열 내에 존재하지 않으면 전체 문자열이 반환됩니다:

use Illuminate\Support\Str;
$slice = Str::after('This is my name', 'This is');
// ' my name'

Str::afterLast()

Str::afterLast 메서드는 문자열에서 주어진 값의 마지막 발생 이후의 모든 것을 반환합니다. 값이 문자열 내에 존재하지 않으면 전체 문자열이 반환됩니다:

use Illuminate\Support\Str;
$slice = Str::afterLast('App\Http\Controllers\Controller', '\\');
// 'Controller'

Str::apa()

Str::apa 메서드는 주어진 문자열을 APA 지침에 따라 제목 대소문자로 변환합니다:

use Illuminate\Support\Str;
$title = Str::apa('Creating A Project');
// 'Creating a Project'

Str::ascii()

Str::ascii 메서드는 문자열을 ASCII 값으로 음역하려고 시도합니다:

use Illuminate\Support\Str;
$slice = Str::ascii('û');
// 'u'

Str::before()

Str::before 메서드는 문자열에서 주어진 값 이전의 모든 것을 반환합니다:

use Illuminate\Support\Str;
$slice = Str::before('This is my name', 'my name');
// 'This is '

Str::beforeLast()

Str::beforeLast 메서드는 문자열에서 주어진 값의 마지막 발생 이전의 모든 것을 반환합니다:

use Illuminate\Support\Str;
$slice = Str::beforeLast('This is my name', 'is');
// 'This '

Str::between()

Str::between 메서드는 두 값 사이의 문자열 부분을 반환합니다:

use Illuminate\Support\Str;
$slice = Str::between('This is my name', 'This', 'name');
// ' is my '

Str::betweenFirst()

Str::betweenFirst 메서드는 두 값 사이의 가장 작은 가능한 문자열 부분을 반환합니다:

use Illuminate\Support\Str;
$slice = Str::betweenFirst('[a] bc [d]', '[', ']');
// 'a'

Str::camel()

Str::camel 메서드는 주어진 문자열을 camelCase로 변환합니다:

use Illuminate\Support\Str;
$converted = Str::camel('foo_bar');
// 'fooBar'

Str::charAt()

Str::charAt 메서드는 지정된 인덱스에 있는 문자를 반환합니다. 인덱스가 범위를 벗어나면 false가 반환됩니다:

use Illuminate\Support\Str;
$character = Str::charAt('This is my name.', 6);
// 's'

Str::chopStart()

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()

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()

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()

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()

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', 'foo']);
// true

ignoreCase 인수를 true로 설정하여 대소문자 구분을 비활성화할 수 있습니다:

use Illuminate\Support\Str;
$doesntContain = Str::doesntContain('This is name', 'MY', ignoreCase: true);
// true

Str::deduplicate()

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::endsWith()

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()

Str::excerpt 메서드는 해당 문자열 내에서 구의 첫 번째 인스턴스와 일치하는 주어진 문자열에서 발췌문을 추출합니다:

use Illuminate\Support\Str;
$excerpt = Str::excerpt('This is my name', 'my', [
'radius' => 3
]);
// '...is my na...'

기본값이 100radius 옵션을 사용하면 잘린 문자열의 각 면에 표시되어야 하는 문자 수를 정의할 수 있습니다.

또한, omission 옵션을 사용하여 잘린 문자열에 접두사 및 접미사로 추가할 문자열을 정의할 수 있습니다:

use Illuminate\Support\Str;
$excerpt = Str::excerpt('This is my name', 'name', [
'radius' => 3,
'omission' => '(...) '
]);
// '(...) my name'

Str::finish()

Str::finish 메서드는 주어진 값으로 끝나지 않은 경우 문자열에 주어진 값의 단일 인스턴스를 추가합니다:

use Illuminate\Support\Str;
$adjusted = Str::finish('this/string', '/');
// this/string/
$adjusted = Str::finish('this/string/', '/');
// this/string/

Str::headline()

Str::headline 메서드는 대소문자, 하이픈 또는 밑줄로 구분된 문자열을 각 단어의 첫 글자가 대문자로 된 공백으로 구분된 문자열로 변환합니다:

use Illuminate\Support\Str;
$headline = Str::headline('steve_jobs');
// Steve Jobs
$headline = Str::headline('EmailNotificationSent');
// Email Notification Sent

Str::inlineMarkdown()

Str::inlineMarkdown 메서드는 CommonMark를 사용하여 GitHub 풍의 Markdown을 인라인 HTML로 변환합니다. 그러나 markdown 메서드와 달리 생성된 모든 HTML을 블록 레벨 요소로 래핑하지 않습니다:

use Illuminate\Support\Str;
$html = Str::inlineMarkdown('**Laravel**');
// <strong>Laravel</strong>

마크다운 보안

기본적으로 Markdown은 원시 HTML을 지원하므로 원시 사용자 입력과 함께 사용할 때 교차 사이트 스크립팅(XSS) 취약성이 노출됩니다. CommonMark 보안 문서에 따라 html_input 옵션을 사용하여 원시 HTML을 이스케이프하거나 제거하고 allow_unsafe_links 옵션을 사용하여 안전하지 않은 링크를 허용할지 여부를 지정할 수 있습니다. 원시 HTML을 허용해야 하는 경우 컴파일된 Markdown을 HTML 정화기를 통해 전달해야 합니다:

use Illuminate\Support\Str;
Str::inlineMarkdown('Inject: <script>alert("Hello XSS!");</script>', [
'html_input' => 'strip',
'allow_unsafe_links' => false,
]);
// Inject: alert(&quot;Hello XSS!&quot;);

Str::is()

Str::is 메서드는 주어진 문자열이 주어진 패턴과 일치하는지 확인합니다. 별표를 와일드카드 값으로 사용할 수 있습니다:

use Illuminate\Support\Str;
$matches = Str::is('foo*', 'foobar');
// true
$matches = Str::is('baz*', 'foobar');
// false

Str::isAscii()

Str::isAscii 메서드는 주어진 문자열이 7비트 ASCII인지 확인합니다:

use Illuminate\Support\Str;
$isAscii = Str::isAscii('Taylor');
// true
$isAscii = Str::isAscii('ü');
// false

Str::isJson()

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()

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()

Str::isUlid 메서드는 주어진 문자열이 유효한 ULID인지 확인합니다:

use Illuminate\Support\Str;
$isUlid = Str::isUlid('01gd6r360bp37zj17nxb55yv40');
// true
$isUlid = Str::isUlid('laravel');
// false

Str::isUuid()

Str::isUuid 메서드는 주어진 문자열이 유효한 UUID인지 확인합니다:

use Illuminate\Support\Str;
$isUuid = Str::isUuid('a0a2a2d2-0b87-4a18-83f2-2529882be2de');
// true
$isUuid = Str::isUuid('laravel');
// false

Str::kebab()

Str::kebab 메서드는 주어진 문자열을 kebab-case로 변환합니다:

use Illuminate\Support\Str;
$converted = Str::kebab('fooBar');
// foo-bar

Str::lcfirst()

Str::lcfirst 메서드는 첫 번째 문자가 소문자로 된 주어진 문자열을 반환합니다:

use Illuminate\Support\Str;
$string = Str::lcfirst('Foo Bar');
// foo Bar

Str::length()

Str::length 메서드는 주어진 문자열의 길이를 반환합니다:

use Illuminate\Support\Str;
$length = Str::length('Laravel');
// 7

Str::limit()

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()

Str::lower 메서드는 주어진 문자열을 소문자로 변환합니다:

use Illuminate\Support\Str;
$converted = Str::lower('LARAVEL');
// laravel

Str::markdown()

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>

마크다운 보안

기본적으로 Markdown은 원시 HTML을 지원하므로 원시 사용자 입력과 함께 사용할 때 교차 사이트 스크립팅(XSS) 취약성이 노출됩니다. CommonMark 보안 문서에 따라 html_input 옵션을 사용하여 원시 HTML을 이스케이프하거나 제거하고 allow_unsafe_links 옵션을 사용하여 안전하지 않은 링크를 허용할지 여부를 지정할 수 있습니다. 원시 HTML을 허용해야 하는 경우 컴파일된 Markdown을 HTML 정화기를 통해 전달해야 합니다:

use Illuminate\Support\Str;
Str::markdown('Inject: <script>alert("Hello XSS!");</script>', [
'html_input' => 'strip',
'allow_unsafe_links' => false,
]);
// <p>Inject: alert(&quot;Hello XSS!&quot;);</p>

Str::mask()

Str::mask 메서드는 문자열의 일부를 반복된 문자로 마스킹하며, 이메일 주소 및 전화 번호와 같은 문자열 세그먼트를 난독화하는 데 사용할 수 있습니다:

use Illuminate\Support\Str;
$string = Str::mask('[email protected]', '*', 3);
// tay***************

필요한 경우 mask 메서드에 세 번째 인수로 음수를 제공하면 메서드가 문자열 끝에서 주어진 거리에서 마스킹을 시작하도록 지시합니다:

$string = Str::mask('[email protected]', '*', -15, 3);
// tay***@example.com

Str::orderedUuid()

Str::orderedUuid 메서드는 인덱싱된 데이터베이스 열에 효율적으로 저장할 수 있는 "타임스탬프 우선" UUID를 생성합니다. 이 메서드를 사용하여 생성된 각 UUID는 메서드를 사용하여 이전에 생성된 UUID 다음에 정렬됩니다:

use Illuminate\Support\Str;
return (string) Str::orderedUuid();

Str::padBoth()

Str::padBoth 메서드는 PHP의 str_pad 함수를 래핑하여 최종 문자열이 원하는 길이에 도달할 때까지 문자열의 양쪽을 다른 문자열로 채웁니다:

use Illuminate\Support\Str;
$padded = Str::padBoth('James', 10, '_');
// '__James___'
use Illuminate\Support\Str;
$string = 'a';
$repeat = Str::repeat($string, 5);
// aaaaa

Str::replace()

Str::replace 메서드는 문자열 내에서 주어진 문자열을 대체합니다.

use Illuminate\Support\Str;
$string = 'Laravel 10.x';
$replaced = Str::replace('10.x', '11.x', $string);
// Laravel 11.x

replace 메서드는 caseSensitive 인자도 허용합니다. 기본적으로 replace 메서드는 대소문자를 구분합니다.

Str::replace('Framework', 'Laravel', caseSensitive: false);

Str::replaceArray()

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()

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()

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()

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()

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()

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()

Str::reverse 메서드는 주어진 문자열을 반전시킵니다.

use Illuminate\Support\Str;
$reversed = Str::reverse('Hello World');
// dlroW olleH

Str::singular()

Str::singular 메서드는 문자열을 단수형으로 변환합니다. 이 함수는 Laravel의 복수화 도구에서 지원하는 모든 언어를 지원합니다.

use Illuminate\Support\Str;
$singular = Str::singular('cars');
// car
$singular = Str::singular('children');
// child

Str::slug()

Str::slug 메서드는 주어진 문자열에서 URL 친화적인 "슬러그"를 생성합니다.

use Illuminate\Support\Str;
$slug = Str::slug('Laravel 5 Framework', '-');
// laravel-5-framework

Str::snake()

Str::snake 메서드는 주어진 문자열을 snake_case로 변환합니다.

use Illuminate\Support\Str;
$converted = Str::snake('fooBar');
// foo_bar
$converted = Str::snake('fooBar', '-');
// foo-bar

Str::squish()

Str::squish 메서드는 단어 사이의 불필요한 공백을 포함하여 문자열에서 모든 불필요한 공백을 제거합니다.

use Illuminate\Support\Str;
$string = Str::squish(' laravel framework ');
// laravel framework

Str::start()

Str::start 메서드는 문자열이 해당 값으로 시작하지 않는 경우 주어진 값의 단일 인스턴스를 문자열에 추가합니다.

use Illuminate\Support\Str;
$adjusted = Str::start('this/string', '/');
// /this/string
$adjusted = Str::start('/this/string', '/');
// /this/string

Str::startsWith()

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()

Str::studly 메서드는 주어진 문자열을 StudlyCase로 변환합니다.

use Illuminate\Support\Str;
$converted = Str::studly('foo_bar');
// FooBar

Str::substr()

Str::substr 메서드는 시작 및 길이 매개변수로 지정된 문자열의 부분을 반환합니다.

use Illuminate\Support\Str;
$converted = Str::substr('The Laravel Framework', 4, 7);
// Laravel

Str::substrCount()

Str::substrCount 메서드는 주어진 문자열에서 주어진 값이 나타나는 횟수를 반환합니다.

use Illuminate\Support\Str;
$count = Str::substrCount('If you like ice cream, you will like snow cones.', 'like');
// 2

Str::substrReplace()

Str::substrReplace 메서드는 세 번째 인수로 지정된 위치에서 시작하여 네 번째 인수로 지정된 문자 수만큼의 문자를 대체하여 문자열의 일부 내에서 텍스트를 대체합니다. 메서드의 네 번째 인수에 0을 전달하면 문자열의 기존 문자를 바꾸지 않고 지정된 위치에 문자열이 삽입됩니다.

use Illuminate\Support\Str;
$result = Str::substrReplace('1300', ':', 2);
// 13:
$result = Str::substrReplace('1300', ':', 2, 0);
// 13:00

Str::swap()

Str::swap 메서드는 PHP의 strtr 함수를 사용하여 주어진 문자열에서 여러 값을 대체합니다.

use Illuminate\Support\Str;
$string = Str::swap([
'Tacos' => 'Burritos',
'great' => 'fantastic',
], 'Tacos are great!');
// Burritos are fantastic!

Str::take()

Str::take 메서드는 문자열의 시작 부분에서 지정된 문자 수를 반환합니다.

use Illuminate\Support\Str;
$taken = Str::take('Build something amazing!', 5);
// Build

Str::title()

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()

Str::toBase64 메서드는 주어진 문자열을 Base64로 변환합니다.

use Illuminate\Support\Str;
$base64 = Str::toBase64('Laravel');
// TGFyYXZlbA==

Str::toHtmlString()

Str::toHtmlString 메서드는 문자열 인스턴스를 Blade 템플릿에서 표시할 수 있는 Illuminate\Support\HtmlString 인스턴스로 변환합니다.

use Illuminate\Support\Str;
$htmlString = Str::of('Nuno Maduro')->toHtmlString();

Str::transliterate()

Str::transliterate 메서드는 주어진 문자열을 가장 가까운 ASCII 표현으로 변환하려고 시도합니다.

use Illuminate\Support\Str;
$email = Str::transliterate('ⓣⓔⓢⓣ@ⓛⓐⓡⓐⓥⓔⓛ.ⓒⓞⓜ');

Str::trim()

Str::trim 메서드는 주어진 문자열의 시작과 끝에서 공백(또는 기타 문자)을 제거합니다. PHP의 기본 trim 함수와 달리 Str::trim 메서드는 유니코드 공백 문자도 제거합니다.

use Illuminate\Support\Str;
$string = Str::trim(' foo bar ');
// 'foo bar'

Str::ltrim()

Str::ltrim 메서드는 주어진 문자열의 시작 부분에서 공백(또는 기타 문자)을 제거합니다. PHP의 기본 ltrim 함수와 달리 Str::ltrim 메서드는 유니코드 공백 문자도 제거합니다.

use Illuminate\Support\Str;
$string = Str::ltrim(' foo bar ');
// 'foo bar '

Str::rtrim()

Str::rtrim 메서드는 주어진 문자열의 끝에서 공백(또는 기타 문자)을 제거합니다. PHP의 기본 rtrim 함수와 달리 Str::rtrim 메서드는 유니코드 공백 문자도 제거합니다.

use Illuminate\Support\Str;
$string = Str::rtrim(' foo bar ');
// ' foo bar'

Str::ucfirst()

Str::ucfirst 메서드는 주어진 문자열의 첫 글자를 대문자로 만들어 반환합니다.

use Illuminate\Support\Str;
$string = Str::ucfirst('foo bar');
// Foo bar

Str::ucsplit()

Str::ucsplit 메서드는 주어진 문자열을 대문자로 구분하여 배열로 분할합니다.

use Illuminate\Support\Str;
$segments = Str::ucsplit('FooBar');
// [0 => 'Foo', 1 => 'Bar']

Str::upper()

Str::upper 메서드는 주어진 문자열을 대문자로 변환합니다.

use Illuminate\Support\Str;
$string = Str::upper('laravel');
// LARAVEL

Str::ulid()

Str::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()

Str::unwrap 메서드는 주어진 문자열의 시작과 끝에서 지정된 문자열을 제거합니다.

use Illuminate\Support\Str;
Str::unwrap('-Laravel-', '-');
// Laravel
Str::unwrap('{framework: "Laravel"}', '{', '}');
// framework: "Laravel"

Str::uuid()

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::wordCount()

Str::wordCount 메서드는 문자열에 포함된 단어 수를 반환합니다.

use Illuminate\Support\Str;
Str::wordCount('Hello, world!'); // 2

Str::wordWrap()

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()

Str::words 메서드는 문자열의 단어 수를 제한합니다. 세 번째 인수를 통해 이 메서드에 추가 문자열을 전달하여 잘린 문자열의 끝에 추가해야 하는 문자열을 지정할 수 있습니다.

use Illuminate\Support\Str;
return Str::words('Perfectly balanced, as all things should be.', 3, ' >>>');
// Perfectly balanced, as >>>

Str::wrap()

Str::wrap 메서드는 주어진 문자열을 추가 문자열 또는 문자열 쌍으로 감쌉니다.

use Illuminate\Support\Str;
Str::wrap('Laravel', '"');
// "Laravel"
Str::wrap('is', before: 'This ', after: ' Laravel!');
// This is Laravel!

str()

str 함수는 주어진 문자열의 새로운 Illuminate\Support\Stringable 인스턴스를 반환합니다. 이 함수는 Str::of 메서드와 동일합니다:

$string = str('Taylor')->append(' Otwell');
// 'Taylor Otwell'

str 함수에 인수가 제공되지 않으면 이 함수는 Illuminate\Support\Str의 인스턴스를 반환합니다:

$snake = str()->snake('FooBar');
// 'foo_bar'

trans()

trans 함수는 언어 파일을 사용하여 주어진 번역 키를 번역합니다:

echo trans('messages.welcome');

지정된 번역 키가 존재하지 않으면 trans 함수는 주어진 키를 반환합니다. 따라서 위의 예시를 사용하면 번역 키가 존재하지 않는 경우 trans 함수는 messages.welcome을 반환합니다.

trans_choice()

trans_choice 함수는 굴절을 사용하여 지정된 번역 키를 번역합니다:

echo trans_choice('messages.notifications', $unreadCount);

지정된 번역 키가 존재하지 않으면 trans_choice 함수는 주어진 키를 반환합니다. 따라서 위의 예시를 사용하면 번역 키가 존재하지 않는 경우 trans_choice 함수는 messages.notifications를 반환합니다.

Fluent Strings

Fluent strings는 문자열 값으로 작업하기 위한 보다 유연하고 객체 지향적인 인터페이스를 제공하여 기존 문자열 연산에 비해 더 읽기 쉬운 구문을 사용하여 여러 문자열 연산을 함께 연결할 수 있습니다.

after

after 메서드는 문자열에서 주어진 값 뒤에 있는 모든 항목을 반환합니다. 문자열 내에 값이 존재하지 않으면 전체 문자열이 반환됩니다.

use Illuminate\Support\Str;
$slice = Str::of('This is my name')->after('This is');
// ' my name'

afterLast

afterLast 메서드는 문자열에서 주어진 값의 마지막 발생 뒤에 있는 모든 항목을 반환합니다. 문자열 내에 값이 존재하지 않으면 전체 문자열이 반환됩니다.

use Illuminate\Support\Str;
$slice = Str::of('App\Http\Controllers\Controller')->afterLast('\\');
// 'Controller'

apa

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

append 메서드는 주어진 값을 문자열에 추가합니다.

use Illuminate\Support\Str;
$string = Str::of('Taylor')->append(' Otwell');
// 'Taylor Otwell'

ascii

ascii 메서드는 문자열을 ASCII 값으로 음역하려고 시도합니다:

use Illuminate\Support\Str;
$string = Str::of('ü')->ascii();
// 'u'

basename

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

before 메서드는 문자열에서 주어진 값 앞에 있는 모든 항목을 반환합니다.

use Illuminate\Support\Str;
$slice = Str::of('This is my name')->before('my name');
// 'This is '

beforeLast

beforeLast 메서드는 문자열에서 주어진 값의 마지막 발생 전에 있는 모든 항목을 반환합니다.

use Illuminate\Support\Str;
$slice = Str::of('This is my name')->beforeLast('is');
// 'This '

between

between 메서드는 두 값 사이의 문자열 부분을 반환합니다.

use Illuminate\Support\Str;
$converted = Str::of('This is my name')->between('This', 'name');
// ' is my '

betweenFirst

betweenFirst 메서드는 두 값 사이의 가능한 가장 작은 문자열 부분을 반환합니다.

use Illuminate\Support\Str;
$converted = Str::of('[a] bc [d]')->betweenFirst('[', ']');
// 'a'

camel

camel 메서드는 주어진 문자열을 camelCase로 변환합니다.

use Illuminate\Support\Str;
$converted = Str::of('foo_bar')->camel();
// 'fooBar'

charAt

charAt 메서드는 지정된 인덱스의 문자를 반환합니다. 인덱스가 범위를 벗어나면 false가 반환됩니다.

use Illuminate\Support\Str;
$character = Str::of('This is my name.')->charAt(6);
// 's'

classBasename

classBasename 메서드는 주어진 클래스의 클래스 이름을 클래스의 네임스페이스가 제거된 상태로 반환합니다.

use Illuminate\Support\Str;
$class = Str::of('Foo\Bar\Baz')->classBasename();
// 'Baz'

chopStart

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

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

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

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

deduplicate

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

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'

endsWith

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

exactly 메서드는 주어진 문자열이 다른 문자열과 정확히 일치하는지 확인합니다.

use Illuminate\Support\Str;
$result = Str::of('Laravel')->exactly('Laravel');
// true

excerpt

excerpt 메서드는 해당 문자열 내에서 구문의 첫 번째 인스턴스와 일치하는 문자열에서 발췌문을 추출합니다.

use Illuminate\Support\Str;
$excerpt = Str::of('This is my name')->excerpt('my', [
'radius' => 3
]);
// '...is my na...'

기본값이 100radius 옵션을 사용하면 잘린 문자열의 각 측면에 나타나야 하는 문자 수를 정의할 수 있습니다.

또한 omission 옵션을 사용하여 잘린 문자열에 접두사 및 접미사로 추가될 문자열을 변경할 수 있습니다.

use Illuminate\Support\Str;
$excerpt = Str::of('This is my name')->excerpt('name', [
'radius' => 3,
'omission' => '(...) '
]);
// '(...) my name'

explode

explode 메서드는 주어진 구분 기호로 문자열을 분할하고 분할된 문자열의 각 섹션이 포함된 컬렉션을 반환합니다.

use Illuminate\Support\Str;
$collection = Str::of('foo bar baz')->explode(' ');
// collect(['foo', 'bar', 'baz'])

finish

finish 메서드는 해당 값으로 끝나지 않은 경우 주어진 값의 단일 인스턴스를 문자열에 추가합니다.

use Illuminate\Support\Str;
$adjusted = Str::of('this/string')->finish('/');
// this/string/
$adjusted = Str::of('this/string/')->finish('/');
// this/string/

headline

headline 메서드는 대소문자, 하이픈 또는 밑줄로 구분된 문자열을 각 단어의 첫 글자가 대문자인 공백으로 구분된 문자열로 변환합니다.

use Illuminate\Support\Str;
$headline = Str::of('taylor_otwell')->headline();
// Taylor Otwell
$headline = Str::of('EmailNotificationSent')->headline();
// Email Notification Sent

inlineMarkdown

inlineMarkdown 메서드는 CommonMark를 사용하여 GitHub 맛의 Markdown을 인라인 HTML로 변환합니다. 그러나 markdown 메서드와 달리 생성된 모든 HTML을 블록 수준 요소로 래핑하지 않습니다.

use Illuminate\Support\Str;
$html = Str::of('**Laravel**')->inlineMarkdown();
// <strong>Laravel</strong>

Markdown 보안

기본적으로 Markdown은 원시 HTML을 지원하므로 원시 사용자 입력과 함께 사용하면 XSS(교차 사이트 스크립팅) 취약점이 노출됩니다. CommonMark 보안 문서에 따라 html_input 옵션을 사용하여 원시 HTML을 이스케이프하거나 제거하고 allow_unsafe_links 옵션을 사용하여 안전하지 않은 링크를 허용할지 여부를 지정할 수 있습니다. 일부 원시 HTML을 허용해야 하는 경우 컴파일된 Markdown을 HTML 정화기를 통해 전달해야 합니다.

use Illuminate\Support\Str;
Str::of('Inject: <script>alert("Hello XSS!");</script>')->inlineMarkdown([
'html_input' => 'strip',
'allow_unsafe_links' => false,
]);
// Inject: alert(&quot;Hello XSS!&quot;);

is

is 메서드는 주어진 문자열이 주어진 패턴과 일치하는지 확인합니다. 별표는 와일드카드 값으로 사용할 수 있습니다.

use Illuminate\Support\Str;
$matches = Str::of('foobar')->is('foo*');
// true
$matches = Str::of('foobar')->is('baz*');
// false

isAscii

isAscii 메서드는 주어진 문자열이 ASCII 문자열인지 확인합니다.

use Illuminate\Support\Str;
$result = Str::of('Taylor')->isAscii();
// true
$result = Str::of('ü')->isAscii();
// false

isEmpty

isEmpty 메서드는 주어진 문자열이 비어 있는지 확인합니다.

use Illuminate\Support\Str;
$result = Str::of(' ')->trim()->isEmpty();
// true
$result = Str::of('Laravel')->trim()->isEmpty();
// false

isNotEmpty

isNotEmpty 메서드는 주어진 문자열이 비어 있지 않은지 확인합니다.

use Illuminate\Support\Str;
$result = Str::of(' ')->trim()->isNotEmpty();
// false
$result = Str::of('Laravel')->trim()->isNotEmpty();
// true

isJson

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

isUlid 메서드는 주어진 문자열이 ULID인지 확인합니다.

use Illuminate\Support\Str;
$result = Str::of('01gd6r360bp37zj17nxb55yv40')->isUlid();
// true
$result = Str::of('Taylor')->isUlid();
// false

isUrl

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

isUuid 메서드는 주어진 문자열이 UUID인지 확인합니다.

use Illuminate\Support\Str;
$result = Str::of('5ace9ab9-e9cf-4ec6-a19d-5881212a452c')->isUuid();
// true
$result = Str::of('Taylor')->isUuid();
// false

kebab

kebab 메서드는 주어진 문자열을 kebab-case로 변환합니다.

use Illuminate\Support\Str;
$converted = Str::of('fooBar')->kebab();
// foo-bar

lcfirst

lcfirst 메서드는 첫 번째 문자가 소문자로 된 주어진 문자열을 반환합니다.

use Illuminate\Support\Str;
$string = Str::of('Foo Bar')->lcfirst();
// foo Bar

length

length 메서드는 주어진 문자열의 길이를 반환합니다.

use Illuminate\Support\Str;
$length = Str::of('Laravel')->length();
// 7

limit

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

lower 메서드는 주어진 문자열을 소문자로 변환합니다.

use Illuminate\Support\Str;
$result = Str::of('LARAVEL')->lower();
// 'laravel'

markdown

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>

Markdown 보안

기본적으로 Markdown은 원시 HTML을 지원하므로 원시 사용자 입력과 함께 사용하면 XSS(교차 사이트 스크립팅) 취약점이 노출됩니다. CommonMark 보안 문서에 따라 html_input 옵션을 사용하여 원시 HTML을 이스케이프하거나 제거하고 allow_unsafe_links 옵션을 사용하여 안전하지 않은 링크를 허용할지 여부를 지정할 수 있습니다. 일부 원시 HTML을 허용해야 하는 경우 컴파일된 Markdown을 HTML 정화기를 통해 전달해야 합니다.

use Illuminate\Support\Str;
Str::of('Inject: <script>alert("Hello XSS!");</script>')->markdown([
'html_input' => 'strip',
'allow_unsafe_links' => false,
]);
// <p>Inject: alert(&quot;Hello XSS!&quot;);</p>

mask

mask 메서드는 문자열의 일부를 반복되는 문자로 마스킹하며, 이메일 주소 및 전화 번호와 같은 문자열 세그먼트를 난독화하는 데 사용할 수 있습니다.

use Illuminate\Support\Str;
$string = Str::of('[email protected]')->mask('*', 3);
// tay***************

필요한 경우 mask 메서드에 세 번째 또는 네 번째 인수로 음수를 제공할 수 있으며, 이는 메서드가 문자열의 끝에서 지정된 거리에서 마스킹을 시작하도록 지시합니다.

$string = Str::of('[email protected]')->mask('*', -15, 3);
// tay***@example.com
$string = Str::of('[email protected]')->mask('*', 4, -4);
// tayl**********.com

match

match 메서드는 주어진 정규식 패턴과 일치하는 문자열 부분을 반환합니다.

use Illuminate\Support\Str;
$result = Str::of('foo bar')->match('/bar/');
// 'bar'
$result = Str::of('foo bar')->match('/foo (.*)/');
// 'bar'

matchAll

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

isMatch 메서드는 문자열이 주어진 정규식과 일치하는 경우 true를 반환합니다.

use Illuminate\Support\Str;
$result = Str::of('foo bar')->isMatch('/foo (.*)/');
// true
$result = Str::of('laravel')->isMatch('/foo (.*)/');
// false

newLine

newLine 메서드는 "줄 끝" 문자를 문자열에 추가합니다.

use Illuminate\Support\Str;
$padded = Str::of('Laravel')->newLine()->append('Framework');
// 'Laravel
// Framework'

padBoth

padBoth 메서드는 PHP의 str_pad 함수를 래핑하여 최종 문자열이 원하는 길이에 도달할 때까지 문자열의 양쪽을 다른 문자열로 채웁니다.

use Illuminate\Support\Str;
$padded = Str::of('James')->padBoth(10, '_');
// '__James___'
$padded = Str::of('James')->padBoth(10);
// ' James '

padLeft

padLeft 메서드는 PHP의 str_pad 함수를 래핑하여 최종 문자열이 원하는 길이에 도달할 때까지 문자열의 왼쪽을 다른 문자열로 채웁니다.

use Illuminate\Support\Str;
$padded = Str::of('James')->padLeft(10, '-=');
// '-=-=-James'
$padded = Str::of('James')->padLeft(10);
// ' James'

padRight

padRight 메서드는 PHP의 str_pad 함수를 래핑하여 최종 문자열이 원하는 길이에 도달할 때까지 문자열의 오른쪽을 다른 문자열로 채웁니다.

use Illuminate\Support\Str;
$padded = Str::of('James')->padRight(10, '-');
// 'James-----'
$padded = Str::of('James')->padRight(10);
// 'James '

pipe

pipe 메서드를 사용하면 현재 값을 주어진 호출 가능 항목으로 전달하여 문자열을 변환할 수 있습니다.

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'

plural

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

position

position 메서드는 문자열에서 하위 문자열의 첫 번째 발생 위치를 반환합니다. 하위 문자열이 문자열 내에 존재하지 않으면 false가 반환됩니다.

use Illuminate\Support\Str;
$position = Str::of('Hello, World!')->position('Hello');
// 0
$position = Str::of('Hello, World!')->position('W');
// 7

prepend

prepend 메서드는 주어진 값을 문자열 앞에 추가합니다.

use Illuminate\Support\Str;
$string = Str::of('Framework')->prepend('Laravel ');
// Laravel Framework

remove

remove 메서드는 주어진 값 또는 값 배열을 문자열에서 제거합니다.

use Illuminate\Support\Str;
$string = Str::of('Arkansas is quite beautiful!')->remove('quite');
// Arkansas is beautiful!

문자열을 제거할 때 대소문자를 무시하기 위해 두 번째 매개변수로 false를 전달할 수도 있습니다.

repeat

repeat 메서드는 주어진 문자열을 반복합니다.

use Illuminate\Support\Str;
$repeated = Str::of('a')->repeat(5);
// aaaaa

replace

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

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

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

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

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

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

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

scan 메서드는 sscanf PHP 함수에서 지원하는 형식에 따라 문자열에서 입력을 컬렉션으로 파싱합니다:

use Illuminate\Support\Str;
$collection = Str::of('filename.jpg')->scan('%[^.].%s');
// collect(['filename', 'jpg'])

singular

singular 메서드는 문자열을 단수형으로 변환합니다. 이 함수는 Laravel의 복수형 변환기에서 지원하는 모든 언어를 지원합니다:

use Illuminate\Support\Str;
$singular = Str::of('cars')->singular();
// car
$singular = Str::of('children')->singular();
// child

slug

slug 메서드는 주어진 문자열에서 URL 친화적인 "슬러그"를 생성합니다:

use Illuminate\Support\Str;
$slug = Str::of('Laravel Framework')->slug('-');
// laravel-framework

snake

snake 메서드는 주어진 문자열을 snake_case로 변환합니다:

use Illuminate\Support\Str;
$converted = Str::of('fooBar')->snake();
// foo_bar

split

split 메서드는 정규식을 사용하여 문자열을 컬렉션으로 분할합니다:

use Illuminate\Support\Str;
$segments = Str::of('one, two, three')->split('/[\s,]+/');
// collect(["one", "two", "three"])

squish

squish 메서드는 단어 사이의 불필요한 공백을 포함하여 문자열에서 불필요한 모든 공백을 제거합니다:

use Illuminate\Support\Str;
$string = Str::of(' laravel framework ')->squish();
// laravel framework

start

start 메서드는 문자열이 해당 값으로 시작하지 않는 경우 주어진 값의 단일 인스턴스를 문자열에 추가합니다:

use Illuminate\Support\Str;
$adjusted = Str::of('this/string')->start('/');
// /this/string
$adjusted = Str::of('/this/string')->start('/');
// /this/string

startsWith

startsWith 메서드는 주어진 문자열이 주어진 값으로 시작하는지 여부를 결정합니다:

use Illuminate\Support\Str;
$result = Str::of('This is my name')->startsWith('This');
// true

stripTags

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

studly 메서드는 주어진 문자열을 StudlyCase로 변환합니다:

use Illuminate\Support\Str;
$converted = Str::of('foo_bar')->studly();
// FooBar

substr

substr 메서드는 주어진 시작 및 길이 매개변수에 의해 지정된 문자열 부분을 반환합니다:

use Illuminate\Support\Str;
$string = Str::of('Laravel Framework')->substr(8);
// Framework
$string = Str::of('Laravel Framework')->substr(8, 5);
// Frame

substrReplace

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

swap 메서드는 PHP의 strtr 함수를 사용하여 문자열에서 여러 값을 대체합니다:

use Illuminate\Support\Str;
$string = Str::of('Tacos are great!')
->swap([
'Tacos' => 'Burritos',
'great' => 'fantastic',
]);
// Burritos are fantastic!

take

take 메서드는 문자열의 시작 부분에서 지정된 문자 수를 반환합니다:

use Illuminate\Support\Str;
$taken = Str::of('Build something amazing!')->take(5);
// Build

tap

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

test 메서드는 문자열이 주어진 정규식 패턴과 일치하는지 여부를 결정합니다:

use Illuminate\Support\Str;
$result = Str::of('Laravel Framework')->test('/Laravel/');
// true

title

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()

toBase64 메서드는 주어진 문자열을 Base64로 변환합니다:

use Illuminate\Support\Str;
$base64 = Str::of('Laravel')->toBase64();
// TGFyYXZlbA==

transliterate

transliterate 메서드는 주어진 문자열을 가장 가까운 ASCII 표현으로 변환하려고 시도합니다:

use Illuminate\Support\Str;
$email = Str::of('ⓣⓔⓢⓣ@ⓛⓐⓡⓐⓥⓔⓛ.ⓒⓞⓜ')->transliterate()

trim

trim 메서드는 주어진 문자열을 자릅니다. PHP의 기본 trim 함수와 달리 Laravel의 trim 메서드는 유니코드 공백 문자도 제거합니다:

use Illuminate\Support\Str;
$string = Str::of(' Laravel ')->trim();
// 'Laravel'
$string = Str::of('/Laravel/')->trim('/');
// 'Laravel'

ltrim

ltrim 메서드는 문자열의 왼쪽을 자릅니다. PHP의 기본 ltrim 함수와 달리 Laravel의 ltrim 메서드는 유니코드 공백 문자도 제거합니다:

use Illuminate\Support\Str;
$string = Str::of(' Laravel ')->ltrim();
// 'Laravel '
$string = Str::of('/Laravel/')->ltrim('/');
// 'Laravel/'

rtrim

rtrim 메서드는 주어진 문자열의 오른쪽을 자릅니다. PHP의 기본 rtrim 함수와 달리 Laravel의 rtrim 메서드는 유니코드 공백 문자도 제거합니다:

use Illuminate\Support\Str;
$string = Str::of(' Laravel ')->rtrim();
// ' Laravel'
$string = Str::of('/Laravel/')->rtrim('/');
// '/Laravel'

ucfirst

ucfirst 메서드는 주어진 문자열의 첫 글자를 대문자로 변환하여 반환합니다:

use Illuminate\Support\Str;
$string = Str::of('foo bar')->ucfirst();
// Foo bar

ucsplit

ucsplit 메서드는 주어진 문자열을 대문자별로 분할하여 컬렉션으로 반환합니다:

use Illuminate\Support\Str;
$string = Str::of('Foo Bar')->ucsplit();
// collect(['Foo', 'Bar'])

unwrap

unwrap 메서드는 주어진 문자열의 시작과 끝에서 지정된 문자열을 제거합니다:

use Illuminate\Support\Str;
Str::of('-Laravel-')->unwrap('-');
// Laravel
Str::of('{framework: "Laravel"}')->unwrap('{', '}');
// framework: "Laravel"

upper

upper 메서드는 주어진 문자열을 대문자로 변환합니다:

use Illuminate\Support\Str;
$adjusted = Str::of('laravel')->upper();
// LARAVEL

when

when 메서드는 주어진 조건이 true이면 주어진 클로저를 호출합니다. 클로저는 유창한 문자열 인스턴스를 받습니다:

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

whenContains 메서드는 문자열에 주어진 값이 포함되어 있으면 주어진 클로저를 호출합니다. 클로저는 유창한 문자열 인스턴스를 받습니다:

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('tony stark')
->whenContains('tony', function (Stringable $string) {
return $string->title();
});
// 'Tony Stark'

필요한 경우 when 메서드에 세 번째 매개변수로 다른 클로저를 전달할 수 있습니다. 이 클로저는 문자열에 주어진 값이 포함되어 있지 않은 경우 실행됩니다.

배열의 값을 전달하여 주어진 문자열에 배열의 값 중 하나라도 포함되어 있는지 여부를 확인할 수도 있습니다:

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

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'

필요한 경우 when 메서드에 세 번째 매개변수로 다른 클로저를 전달할 수 있습니다. 이 클로저는 조건 매개변수가 false로 평가되는 경우 실행됩니다.

whenEmpty

whenEmpty 메서드는 문자열이 비어 있으면 주어진 클로저를 호출합니다. 클로저가 값을 반환하면 해당 값도 whenEmpty 메서드에서 반환됩니다. 클로저가 값을 반환하지 않으면 유창한 문자열 인스턴스가 반환됩니다:

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of(' ')->whenEmpty(function (Stringable $string) {
return $string->trim()->prepend('Laravel');
});
// 'Laravel'

whenNotEmpty

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

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

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

whenExactly 메서드는 문자열이 주어진 문자열과 정확히 일치하면 주어진 클로저를 호출합니다. 클로저는 유창한 문자열 인스턴스를 받습니다:

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('laravel')->whenExactly('laravel', function (Stringable $string) {
return $string->title();
});
// 'Laravel'

whenNotExactly

whenNotExactly 메서드는 문자열이 주어진 문자열과 정확히 일치하지 않으면 주어진 클로저를 호출합니다. 클로저는 유창한 문자열 인스턴스를 받습니다:

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('framework')->whenNotExactly('laravel', function (Stringable $string) {
return $string->title();
});
// 'Framework'

whenIs

whenIs 메서드는 문자열이 주어진 패턴과 일치하면 주어진 클로저를 호출합니다. 별표는 와일드카드 값으로 사용할 수 있습니다. 클로저는 유창한 문자열 인스턴스를 받습니다:

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

whenIsAscii 메서드는 문자열이 7비트 ASCII이면 주어진 클로저를 호출합니다. 클로저는 유창한 문자열 인스턴스를 받습니다:

use Illuminate\Support\Str;
use Illuminate\Support\Stringable;
$string = Str::of('laravel')->whenIsAscii(function (Stringable $string) {
return $string->title();
});
// 'Laravel'

whenIsUlid

whenIsUlid 메서드는 문자열이 유효한 ULID이면 주어진 클로저를 호출합니다. 클로저는 유창한 문자열 인스턴스를 받습니다:

use Illuminate\Support\Str;
$string = Str::of('01gd6r360bp37zj17nxb55yv40')->whenIsUlid(function (Stringable $string) {
return $string->substr(0, 8);
});
// '01gd6r36'

whenIsUuid

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

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

wordCount 메서드는 문자열에 포함된 단어 수를 반환합니다:

use Illuminate\Support\Str;
Str::of('Hello, world!')->wordCount(); // 2

words

words 메소드는 문자열의 단어 수를 제한합니다. 필요에 따라, 잘린 문자열에 추가될 추가 문자열을 지정할 수 있습니다:

use Illuminate\Support\Str;
$string = Str::of('Perfectly balanced, as all things should be.')->words(3, ' >>>');
// Perfectly balanced, as >>>

wrap

wrap 메소드는 주어진 문자열을 추가 문자열 또는 문자열 쌍으로 감쌉니다:

use Illuminate\Support\Str;
Str::of('Laravel')->wrap('"');
// "Laravel"
Str::is('is')->wrap(before: 'This ', after: ' Laravel!');
// This is Laravel!