Chuyển tới nội dung chính
Phiên bản: 8.0.0

String

Namespace: Illuminate\Support\Str
Alias ngắn: \Str
Tài liệu tham khảo: Laravel String Helpers

SkillDo CMS v8 mở rộng Illuminate\Support\Str của Laravel, bổ sung thêm các macro đặc thù như Str::clear(), Str::price(), Str::isSerialized(), Str::safeJson(), Str::colorToRgb()... (đăng ký trong packages/skilldo/framework/src/Bootstrap/RegisterMacros.php). Lưu ý Str::ascii()Str::slug() cũng được ghi đè bằng macro để xử lý tiếng Việt tốt hơn. Tất cả gọi bằng alias Str::.

Str::clearStr::finishStr::replaceFirst
Str::afterStr::isStr::replaceLast
Str::afterLastStr::isSerializedStr::ascii
Str::beforeStr::startsWithStr::slug
Str::beforeLastStr::lengthStr::price
Str::betweenStr::limitStr::substr
Str::containsStr::lowerStr::ucfirst
Str::containsAllStr::upperStr::title
Str::endsWithStr::replaceArrayStr::of
Str::startStr::randomStr::safeJson
Str::colorToRgbStr::isStaticStr::isHtmlSpecialChars

Str::clear

Hàm Str::clear xóa tất cả tag HTML khỏi chuỗi:

$slice = Str::clear('<p>This is <b>my name</b></p>');
// 'This is my name'

Str::after

Hàm Str::after trả về mọi thứ sau một key đã cho trong một chuỗi. Toàn bộ chuỗi sẽ được trả lại nếu key không tồn tại trong chuỗi:

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

Str::afterLast

Hàm Str::afterLast trả về mọi thứ sau lần xuất hiện cuối cùng của key đã cho trong một chuỗi:

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

Str::before

Hàm Str::before trả về mọi thứ trước một key đã cho trong một chuỗi:

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

Str::beforeLast

Hàm Str::beforeLast trả về mọi thứ trước lần xuất hiện cuối cùng của key đã cho trong một chuỗi:

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

Str::between

Hàm Str::between trả về phần chuỗi giữa hai giá trị:

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

Str::contains

Hàm Str::contains cho biết nếu một chuỗi có chứa một chuỗi con khác hay không:

$contains = Str::contains('This is my name', 'my');
// true

Bạn cũng có thể sử dụng một mảng các giá trị để xác định nếu chuỗi cho trước chứa bất kỳ giá trị nào trong mảng:

$contains = Str::contains('This is my name', ['my', 'foo']);
// true

Str::containsAll

Hàm Str::containsAll xác định xem chuỗi đã cho có chứa tất cả các giá trị trong một mảng hay không:

$containsAll = Str::containsAll('This is my name', ['my', 'name']);
// true

Str::endsWith

Hàm Str::endsWith cho biết nếu chuỗi cho trước kết thúc với giá trị kiểm tra:

$result = Str::endsWith('This is my name', 'name');
// true

Bạn cũng có thể sử dụng một mảng các giá trị:

$result = Str::endsWith('This is my name', ['name', 'foo']);
// true

$result = Str::endsWith('This is my name', ['this', 'foo']);
// false

Str::startsWith

Hàm Str::startsWith cho biết nếu một chuỗi bắt đầu bằng một chuỗi con cho trước hay không:

$result = Str::startsWith('This is my name', 'This');
// true

Str::start

Hàm Str::start thêm một ký tự cho một chuỗi nếu nó chưa bắt đầu với ký tự cần thêm:

$adjusted = Str::start('this/string', '/');
// /this/string

$adjusted = Str::start('/this/string', '/');
// /this/string

Str::finish

Hàm Str::finish thêm một ký tự vào cuối một chuỗi nếu nó chưa kết thúc bằng ký tự đó:

$adjusted = Str::finish('this/string', '/');
// this/string/
$adjusted = Str::finish('this/string/', '/');
// this/string/

Str::is

Hàm Str::is cho biết nếu một chuỗi có khớp với một pattern nào không. Dấu * có thể được dùng để đánh dấu wildcards:

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

Str::isSerialized

Hàm Str::isSerialized cho biết một chuỗi có phải là chuỗi định dạng serialized hay không:

$result = Str::isSerialized('a:1:{s:4:"name";s:4:"Desk";}');
// true

$result = Str::isSerialized('just a string');
// false

Str::length

Hàm Str::length trả về độ dài của chuỗi đã cho:

$length = Str::length('skilldo');
// 7

Str::limit

Hàm Str::limit cắt ngắn chuỗi theo chiều dài được chỉ định:

$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20);
// The quick brown fox...

Bạn cũng có thể sử dụng đối số thứ ba để thay đổi chuỗi sẽ được thêm vào cuối:

$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20, ' (...)');
// The quick brown fox (...)

Str::lower

Hàm Str::lower chuyển chuỗi thành chữ thường:

$converted = Str::lower('LARAVEL');
// laravel

Str::upper

Hàm Str::upper chuyển chuỗi đã cho thành chữ hoa:

$string = Str::upper('SkillDo');
// SKILLDO

Str::random

Hàm Str::random tạo ra một chuỗi ngẫu nhiên với chiều dài được chỉ định:

$random = Str::random(40);

Str::replaceArray

Hàm Str::replaceArray thay thế một giá trị nhất định trong chuỗi tuần tự bằng cách sử dụng một mảng:

$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

Hàm Str::replaceFirst thay thế lần xuất hiện đầu tiên của một giá trị trong một chuỗi:

$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

Hàm Str::replaceLast thay thế lần xuất hiện cuối cùng của một giá trị trong một chuỗi:

$replaced = Str::replaceLast('the', 'a', 'the quick brown fox jumps over the lazy dog');
// the quick brown fox jumps over a lazy dog

Str::ascii

Hàm Str::ascii được SkillDo ghi đè bằng macro: chuẩn hóa Unicode (Normalizer FORM_C), chuyển chuỗi về chữ thường rồi chuyển các ký tự có dấu (đặc biệt là tiếng Việt) thành không dấu:

$slice = Str::ascii('û');
// 'u'

$slice = Str::ascii('Tiếng Việt');
// 'tieng viet'

Str::slug

Hàm Str::slug được SkillDo ghi đè bằng macro: loại bỏ HTML entities và thẻ HTML trước, chuyển tiếng Việt không dấu (qua Str::ascii), rồi tạo URL "slug" thân thiện:

$slug = Str::slug('SkillDo 8 CMS', '-');
// skilldo-8-cms

$slug = Str::slug('Sản phẩm mới');
// san-pham-moi

Str::price

Hàm Str::price là macro mở rộng đặc thù của SkillDo. Loại bỏ mọi ký tự không phải số/dấu chấm/dấu phẩy khỏi chuỗi, xử lý dấu , (coi là phân cách hàng nghìn, hoặc phân cách thập phân khi đứng sau dấu .), và trả về int nếu kết quả không còn phần thập phân:

$price = Str::price('1,000,000');
// 1000000 (int)

$price = Str::price('250000 đ');
// 250000 (int)

$price = Str::price('1,234.56');
// '1234.56'

$price = Str::price('1.234,56');
// '1234.56'

Lưu ý: chuỗi chỉ chứa dấu chấm (ví dụ '1.000.000') sẽ được trả về nguyên trạng (dấu chấm được coi là phân cách thập phân), không bị chuyển thành số nguyên.

Str::substr

Hàm Str::substr trả về phần chuỗi được chỉ định bởi tham số bắt đầu và độ dài:

$converted = Str::substr('The SkillDo CMS', 4, 7);
// SkillDo

Str::ucfirst

Hàm Str::ucfirst viết hoa ký tự đầu tiên của chuỗi:

$string = Str::ucfirst('foo bar');
// Foo bar

Str::title

Hàm Str::title in hoa chữ cái đầu của từng từ trong chuỗi:

$converted = Str::title('a nice title uses the correct case');
// A Nice Title Uses The Correct Case

Str::of

Hàm Str::of trả về một Stringable instance cho phép xử lý chuỗi theo hướng đối tượng (fluent):

$result = Str::of('  SkillDo CMS  ')
->trim()
->lower()
->slug('-');
// skilldo-cms

Str::isHtmlSpecialChars

Macro SkillDo. Kiểm tra chuỗi có chứa các HTML entity đã được escape (&amp;, &quot;, &#039;, &lt;, &gt;) hay không:

$result = Str::isHtmlSpecialChars('Tom &amp; Jerry');
// true

$result = Str::isHtmlSpecialChars('Tom & Jerry');
// false

Str::safeJson

Macro SkillDo. Decode một chuỗi JSON, escape các dấu nháy đơn trong mọi giá trị string (đệ quy với JSON/array lồng nhau) rồi trả về chuỗi JSON an toàn. Truyền true ở tham số thứ hai để nhận về mảng thay vì chuỗi JSON:

$json = Str::safeJson('{"name":"O\'Brien"}');
// '{"name":"O''Brien"}'

$array = Str::safeJson('{"name":"O\'Brien"}', true);
// ['name' => "O''Brien"]

Str::safeJsonString

Macro SkillDo. Escape dấu nháy đơn trong một chuỗi (nhân đôi ' thành ''):

$result = Str::safeJsonString("O'Brien");
// "O''Brien"

Str::colorToRgb

Macro SkillDo. Chuyển màu HEX (#RRGGBB) hoặc chuỗi rgb(r, g, b) thành mảng ['r' => ..., 'g' => ..., 'b' => ...]. Nếu chuỗi không hợp lệ, trả về giá trị mặc định ở tham số thứ hai (mặc định ['r' => 0, 'g' => 0, 'b' => 0]):

$rgb = Str::colorToRgb('#ff8800');
// ['r' => 255, 'g' => 136, 'b' => 0]

$rgb = Str::colorToRgb('rgb(255, 136, 0)');
// ['r' => 255, 'g' => 136, 'b' => 0]

Str::isStatic

Macro SkillDo. Kiểm tra một chuỗi dạng Class::method có trỏ tới một static method tồn tại hay không (dùng cho Ajax dispatcher / callback):

$result = Str::isStatic('App\Ajax\Contact::send');
// true nếu App\Ajax\Contact::send tồn tại và là static