私はこのような次の日付を持っています
20120809
これを「-」で区切り、
2012-08-09
正規表現を使用します。
PHPを使用してこれを解決する簡単な方法はありますか?何でも大丈夫です。
あなたはただ使うことができますdate_parse_from_format
、ドキュメントはここにあります。あなたの場合、それは次のことになります:
date_parse_from_format('Ymd',$dateIn);
配列を返すので、そこから好きなように行うことができます
@Rocketが言ったように、DateTime
オブジェクトを取得することもできます。これにより、あらゆる種類のグッズも提供されます。読むべきより多くのドキュメント;)
使用date()
とstrtotime()
?
date('Y-m-d',strtotime('20120809'));
これを行うのに正規表現は必要ないということで他の人と合意しましたが...
preg_replace('/(\d{4})(\d\d)(\d\d)/', '\1-\2-\3', $str);
ただし、PHPでは、substr_replace
ダッシュを挿入するために使用できます。
$str = substr_replace($str, '-', 4, 0);
$str = substr_replace($str, '-', 7, 0);
正規表現を使用する場合は、簡単です。\d
のような数量詞と一緒に使用するだけ{4}
です。
preg_replace('/(\d{4})(\d{2})(\d{2})/', '$1-$2-$3', '20120809');
このことのために正規表現を使用することは完全に間違っており、substr()のようにそれを行うためのより良い方法があります...
しかし、これがあなたが望むものです:
<?php
$string = '20120809';
preg_match( '/(\d{4})(\d{2})(\d{2})/', $string, $parts);
unset($parts[0]);
$result = implode('-', $parts); //2012-08-09
?>