開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. PHP >
  4. 【PHP】PHPでString.Formatメソッドを実装
no-image

【PHP】PHPでString.Formatメソッドを実装

こんにちは、スズキです。

C#にString.Formatというメソッドがありますが、
PHPで開発をしていて「String.Formatメソッドが使いたいな・・・」と思って先日メソッドを作ったので今回は作成したメソッドを紹介します。

作成したメソッドは以下になります。
class Str extends \Illuminate\Support\Str
{
    /**
     * 指定された形式に基づいてオブジェクトの値を文字列に変換し、別の文字列に挿入します。
     * @param $format
     * @param ...$params
     * @return mixed
     */
    public static function format($format, ...$params)
    {
        if ($params === null) {
            return $format;
        }

        $index = 0;
        $retString = $format;
        foreach ($params as $param) {
            $pattern = "/\\{{$index}\\}/";
            $retString = preg_replace($pattern, $param, $retString);
            $index++;
        }

        return $retString;
    }
}

第二引数が「...$params」となっていますが、これはPHPの可変長引数の書き方です。
可変長引数はPHP5.6から導入された機能なので、上記メソッドを利用するにはPHPのバージョンが5.6以降である必要があります。


使い方ですが、
$str = Str::format("名前:{0}、年齢:{1}歳、性別:{2}", "山田太郎", 20, "男性");
とすれば、$strの内容が「名前:山田太郎、年齢:20歳、性別:男性」になります。


今後の改善案として
  • 小数点第何位までを表示するかを指定
  • 右詰め、左詰め
  • 0埋め
  • 3桁毎のカンマ区切り表示(「12345 → 12,345」の置き換え)
あたりがあったりします。
機会があれば実装して、追加のブログ記事を書くかもしれませんね。(多分しませんが・・・)
  • posted by ナカエ
  • PHP
TOPに戻る