今回は以下のような文字列のプレースホルダーに対して、実行時の日付をはめていく変換を書いていきます。 日付の操作にはChronosを使用します。
使用
プレースホルダの仕様は以下のとおりです。
- “#{ym}” -> “2020年01月”
- “#{ym+1}” -> “2020年02月” // 1月加える
- “#{ym-1}” -> “2019年12月” // 1月減らす
関数
function render(string $template): string { return preg_replace_callback( "/#\{(ym)([-\+]{1}\d{1,2})?\}/u", [$this, "findVal"], $template ); } function findVal($matches) { $addend = isset($matched[2]) ? $matched[2] : 0; $data = new FrozenDate(); // Today return (string)$date->addMonth($addend)->i18nFormat("yyyy年MM月"); } echo render("来月は#{ym+1}です"); // => 来月は2020年02月です。