Str クラスとは
Illuminate\Support\Str クラスは、文字列操作のための豊富なメソッドを提供します。PHPの標準文字列関数を個別に呼ぶ代わりに、統一されたインターフェースで直感的に文字列を処理できます。
Laravelの文字列操作には2つのスタイルがあります。
- 静的メソッドスタイル:
Str::slug($title, '-')— 単発の操作に向いています - Fluentスタイル(メソッドチェーン):
Str::of($title)->slug('-')->limit(50)— 複数の操作をつなげて書けます
str() グローバルヘルパー関数は Str::of() と同等です。str('hello')->upper() のように書けます。ケース変換
文字列のケース(大文字・小文字・記法)を変換するメソッドです。データベースのカラム名やAPIレスポンスのキー変換でよく使います。Str::camel() / Str::snake() / Str::kebab() / Str::studly()
Str::lower() / Str::upper() / Str::title()
スラッグとURL
Str::slug() — URLフレンドリーなスラッグを生成
記事やページのURLを生成するときに必須のメソッドです。スペースや特殊文字を変換し、URLに安全な文字列を作ります。
Str::of() でスラッグ生成からバリデーションまで一括処理
文字列の切り詰め
Str::limit() — 文字数で切り詰める
記事の本文やコメントを一覧表示するときにプレビューテキストを生成するメソッドです。
Str::words() — 単語数で切り詰める
文字列の検索と確認
Str::contains() — 文字列を含むか確認
Str::startsWith() / Str::endsWith()
Str::is() — ワイルドカードパターンマッチ
文字列の変換と置換
Str::replace() — 文字列を置換
Str::replaceArray() — 配列で順番に置換
Str::replaceMatches() — 正規表現で置換
Str::remove() — 文字列を削除
Str::squish() — 余分な空白を除去
文字列の前後操作
Str::before() / Str::after()
Str::between() — 2つの文字列の間を取得
Str::start() / Str::finish() — 特定文字で始まる・終わるようにする
すでにその文字で始まっていれば追加しません(二重化しない)。
Str::chopStart() / Str::chopEnd() — 特定の接頭辞・接尾辞を除去
マスキングとセキュリティ
Str::mask() — 文字列をマスクする
メールアドレスや電話番号の一部を隠す処理に使います。
Str::excerpt() — 文脈付きで文字列を抜き出す
検索結果のスニペット表示などに使います。
ランダム文字列と識別子
Str::random() — ランダム文字列を生成
トークンやパスワードのリセット用のキーを生成するときに使います。
Str::uuid() / Str::ulid() — UUID・ULID生成
Str::password() — セキュアなパスワード生成
Str::counted() — 数量付きの単数・複数形
数値に応じて単数・複数形に変換し、フォーマットされた数値と一緒に返します。
Fluent Strings(メソッドチェーン)
Str::of() または str() で始めると、Stringable インスタンスが返り、メソッドをチェーンできます。最終的に文字列として使いたい場合は (string) でキャストするか、文字列コンテキストで使います。
実用的なメソッドチェーンの例
ブログ記事のスラッグ生成条件付きメソッドチェーン(when())
pipe() — 任意のコールバックを挟む
Str::of() で使える主要メソッド一覧
Fluent Strings で使えるメソッドは静的メソッドとほぼ同じセットです。以下は代表的なものです。
まとめ
よく使う Str メソッド一覧
よく使う Str メソッド一覧
静的メソッド vs Fluent(Str::of)
静的メソッド vs Fluent(Str::of)
静的メソッドを使う場面:Fluent(Str::of)を使う場面:
- 1〜2回の変換だけでよい場合
- シンプルで読みやすいコード
- 3つ以上の変換をまとめて行う場合
- 条件分岐(
when())を含む場合 - 処理の流れを上から下に読めるようにしたい場合
Str クラス vs PHP標準関数
Str クラス vs PHP標準関数
PHPの
strtolower(), substr(), str_replace() などの標準関数の代わりに Str クラスを使うことで:- マルチバイト文字(日本語)を安全に扱える(
mb_*関数を内部で使用) - メソッドチェーンで処理をまとめられる
- 引数の順序を覚えなくてよい(一貫したインターフェース)
- Laravelのコードスタイルに統一できる