0

私はこのような次の日付を持っています

20120809

これを「-」で区切り、

2012-08-09

正規表現を使用します。

PHPを使用してこれを解決する簡単な方法はありますか?何でも大丈夫です。

4

5 に答える 5

4

あなたはただ使うことができますdate_parse_from_formatドキュメントはここにあります。あなたの場合、それは次のことになります:

date_parse_from_format('Ymd',$dateIn);

配列を返すので、そこから好きなように行うことができます

@Rocketが言ったように、DateTimeオブジェクトを取得することもできます。これにより、あらゆる種類のグッズも提供されます。読むべきより多くのドキュメント;)

于 2012-09-13T15:56:26.320 に答える
3

使用date()strtotime()

date('Y-m-d',strtotime('20120809'));
于 2012-09-13T15:58:24.063 に答える
2

これを行うのに正規表現は必要ないということで他の人と合意しましたが...

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);
于 2012-09-13T15:55:07.497 に答える
2

正規表現を使用する場合は、簡単です。\dのような数量詞と一緒に使用するだけ{4}です。

preg_replace('/(\d{4})(\d{2})(\d{2})/', '$1-$2-$3', '20120809');
于 2012-09-13T15:55:42.007 に答える
1

このことのために正規表現を使用することは完全に間違っており、substr()のようにそれを行うためのより良い方法があります...

しかし、これがあなたが望むものです:

<?php

$string = '20120809';

preg_match( '/(\d{4})(\d{2})(\d{2})/', $string, $parts);

unset($parts[0]);

$result = implode('-', $parts); //2012-08-09

?>
于 2012-09-13T16:02:30.547 に答える