Skip to main content

什麼是 Str 類別

Illuminate\Support\Str 類別提供豐富的字串操作方法。相較於個別呼叫 PHP 的標準字串函式,可用統一介面直覺處理字串。 Laravel 的字串操作有兩種風格:
  • 靜態方法風格Str::slug($title, '-') — 適合單次操作
  • Fluent 風格(method chain)Str::of($title)->slug('-')->limit(50) — 可將多個操作串起來寫
str() 全域 helper 函式與 Str::of() 等效。可寫成 str('hello')->upper()

大小寫轉換

轉換字串大小寫(大寫、小寫、命名法)的方法。常用於資料庫欄位名或 API 回應鍵值的轉換。

Str::camel() / Str::snake() / Str::kebab() / Str::studly()

Str::lower() / Str::upper() / Str::title()

Slug 與 URL

Str::slug() — 產生 URL 友善的 slug

產生文章或頁面 URL 時的必備方法。將空格與特殊字元轉換為 URL 安全的字串。
包含中文/日文時 slug 可能為空。若想使用中文 slug,可另外搭配羅馬拼音轉換函式庫,或考慮使用 ID、時間戳作為 URL。

Str::of() 從 slug 產生到驗證一次完成

字串截斷

Str::limit() — 依字元數截斷

在列表顯示文章內文或留言時產生預覽文字的方法。

Str::words() — 依單字數截斷

字串搜尋與確認

Str::contains() — 是否包含子字串

Str::startsWith() / Str::endsWith()

Str::is() — 萬用字元樣式比對

字串轉換與置換

Str::replace() — 置換字串

Str::replaceArray() — 依序以陣列置換

Str::replaceMatches() — 以正則表達式置換

Str::remove() — 移除字串

Str::squish() — 移除多餘空白

字串前後操作

Str::before() / Str::after()

Str::between() — 取得兩字串之間

Str::start() / Str::finish() — 確保以特定字元開頭/結尾

若已經以該字元開頭,不會重複加入(不會加倍)。

Str::chopStart() / Str::chopEnd() — 移除特定前綴/後綴

遮罩與安全性

Str::mask() — 遮罩字串

用於隱藏 email 或電話號碼的部分。

Str::excerpt() — 依上下文取出字串

用於搜尋結果的 snippet 顯示。

隨機字串與識別碼

Str::random() — 產生隨機字串

用於產生 token 或密碼重設用金鑰。

Str::uuid() / Str::ulid() — 產生 UUID/ULID

Str::password() — 產生安全密碼

Str::counted() — 帶數量的單數/複數

依數值轉為單複數,並連同格式化後的數值一併回傳。
Fluent 風格也可同樣使用:
在英文 UI 中顯示筆數(分「1 件」與「2 件以上」)時很方便。逗號分隔的格式會自動套用。

Fluent Strings(method chain)

Str::of()str() 起頭會回傳 Stringable 實例,可鏈式呼叫方法。最後要作為字串使用時,用 (string) 轉換或在字串上下文中使用。

實用的 method chain 範例

產生部落格文章 slug
從 URL 擷取網域
使用者輸入的 sanitize
從類別名稱產生檔案路徑

條件式 method chain(when()

pipe() — 插入任意 callback

Str::of() 可用主要方法一覽

Fluent Strings 可用的方法與靜態方法幾乎相同。以下為代表性的方法:

總結

使用靜態方法的時機
  • 只做 1〜2 次轉換
  • 簡潔易讀的程式碼
使用 Fluent(Str::of)的時機
  • 要一次做 3 個以上的轉換
  • 需含條件分支(when()
  • 想讓處理由上至下順讀
Str 類別取代 PHP 的 strtolower()substr()str_replace() 等標準函式可獲得:
  • 安全處理多位元組字元(中文/日文)(內部使用 mb_* 函式)
  • 以 method chain 整合處理
  • 不用記引數順序(一致的介面)
  • 統一使用 Laravel 的撰寫風格
最後修改於 2026年8月2日