• ベストアンサー

文字列の変換について

最近phpをはじめたものです。 質問ですが、 20081107180000 という文字列を 2008-11-07 18:00:00 という文字列に変換したいんですが、 どういった処理を行えばよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.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; スマートではありませんが、 これを自分で関数かなにかしておけば、目立たないし、 正規表現をマスターしたら、 あとからその関数に正規表現を使えばいいかなと思っています。

okapi5243
質問者

お礼

まさにこのやり方が知りたかった方法です。 ありがとうございます!

その他の回答 (2)

  • altrn
  • ベストアンサー率62% (10/16)
回答No.2

直接関係ないかもしれませんが... 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); などとすれば曜日が表示でき、いろいろなものに対応できる柔軟性がもてると思います。

okapi5243
質問者

お礼

ありがとうございます。 参考になりました!

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

まぁいろいろやり方もあるとはおもいますが一例。 <? $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; ?>

okapi5243
質問者

お礼

どうもありがとうございます。 正規表現はあまり理解していないもので、関数を使って何とかしようとしてました。 やはり正規表現を使うしかないですかね?