- ベストアンサー
文字列の変換について
最近phpをはじめたものです。 質問ですが、 20081107180000 という文字列を 2008-11-07 18:00:00 という文字列に変換したいんですが、 どういった処理を行えばよいのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
私は正規表現を理解していないので、いつもこうしています。 $q = "20081107180000"; $y = substr($q,0,4); $m = substr($q,4,2); $d = substr($q,6,2); $hh = substr($q,8,2); $mm = substr($q,10,2); $dd = substr($q,12,2); $a = $y."-".$m."-".$d." ".$hh.":".$mm.":".$dd; echo $a; スマートではありませんが、 これを自分で関数かなにかしておけば、目立たないし、 正規表現をマスターしたら、 あとからその関数に正規表現を使えばいいかなと思っています。
その他の回答 (2)
- altrn
- ベストアンサー率62% (10/16)
直接関係ないかもしれませんが... PHPで時間の処理をしたいときはタイムスタンプを使うと 便利だと個人的に思います。 http://jp2.php.net/manual/ja/function.time.php http://jp2.php.net/manual/ja/function.date.php たとえば、 時間を記録したいときは、 $time=time(); として、この値を保存しておき、 表示するときは、 echo date('Y/m/d H:i:s',$time); などとすることができます。 また、文字列からタイムスタンプを作ることもできるので、 http://jp2.php.net/manual/ja/function.strtotime.php $time=strtotime('2008-11-07 18:00:00'); echo date('w',$time); などとすれば曜日が表示でき、いろいろなものに対応できる柔軟性がもてると思います。
お礼
ありがとうございます。 参考になりました!
- yambejp
- ベストアンサー率51% (3827/7415)
まぁいろいろやり方もあるとはおもいますが一例。 <? $str="20081107180000"; $str=preg_replace("/^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/","$1-$2-$3 $4:$5:$6",$str); print $str; ?>
お礼
どうもありがとうございます。 正規表現はあまり理解していないもので、関数を使って何とかしようとしてました。 やはり正規表現を使うしかないですかね?
お礼
まさにこのやり方が知りたかった方法です。 ありがとうございます!