[PHP] 日付のフォーマットを便利に変更できる関数

PHP
先日仕事でPHPのコードを書いている時に、毎日処理をするバッチ処理のコードを書かなくてはいけなくなりました。 そこで問題発生。 他のプログラムとの連携で、バッチ処理に送られてくる日付と、データベースで使われている日付のフォーマットが違っていて、 さらに、その他のモジュールとのやりとりが、全てバラバラの日付フォーマットになっていました。 オーマイガ! ということで、それらを柔軟にフォーマット変換できるように関数を作っておいたので、自分が後でコピペで使えるようにブログに残しておきますね。 ちなみに、送られてくる日付フォーマットは、"20230721"で、 データベースで使われているフォーマットは、"2023-07-21"で、 別のプログラム(表示形式)では、"2023/07/21"で使われていました。 他にも、"2023.07.21"という文字列も見え隠れしていたのを、僕は見逃していません。 ジーザス!

ソースコード

function date_format($date_str=null , $separator=''){ if(preg_match('/([0-9]{4}).*?([0-9]{2}).*?([0-9]{2})/' , $date_str , $match)){ return [ $match[1]. $separator .$match[2]. $separator .$match[3] ]; } else{ return $date_str; } }

解説

date_format()という関数名で、送り値に、年月日の並びの数値を入れた時に、yearとmonthとdateを連想配列で抜き出して、指定された$separatorで、整えて送り返してあげる、おもてなしです。 正規表現がポイントですが、"2023年07月21日"という表記でも、ちゃんと取得できます。 でもでもでもでも、 "2023年7月21日" は認識しません。 年が4桁、月と日が2桁の数値になっていることが大前提になります。 もう少し頑張れば、月と日が1桁でもできるかもですね。 有志がいれば、コメントで完成版ソースを書いてくれますよね?