書き方色々あります
正規表現で地道にやるなら、preg_matchを使う。
※記事下のコメントで、@tadsanさんがDateTime::createFromFormat()を使う方法を書いて下さいました。
※さらにコメントで、@ktty1220さんがexplode()を使う方法を書いて下さいました。
日付情報の前提条件
・年,月,日以外の情報が入っていない事(曜日とか時間とか)
・斜線または"年月日"で区切られている事
preg_matchで書くなら
preg_match()の引数の入れ方
preg_match("分割する条件", 分割したい値や変数, 分割した値を入れる配列);
第1引数 … 条件全体と、()で囲んだ部分がマッチする。
第2引数 … 下の例では変数を使っているが、そのまま値も入れられる
第3引数 … [0]に全体が入り、[1]には一番左の()にマッチしたもの、[2]はその隣の()にマッチにしたものが入る。
yyyy/mm/ddタイプの例
$set_date = '2015/5/8';
$date = array();
preg_match("@([0-9]{4,})/([0-9]{1,2})/([0-9]{1,2})@",$set_date,$date);
echo $date[0]; // 2015/5/8
echo $date[1]; // 2015
echo $date[2]; // 5
echo $date[3]; // 8
yyyy年mm月dd日タイプの例
$set_date = '2015/5/8';
$date = array();
preg_match("/([0-9]{4,})年([0-9]{1,2})月([0-9]{1,2})日/",$set_date,$date);
echo $date[0]; // 2015/5/8
echo $date[1]; // 2015
echo $date[2]; // 5
echo $date[3]; // 8
追記
@ngyuki さんからご指摘いただきました。
年が4桁限定だと、遥か未来に不具合になります確かに。
ありがとうございます。記事修正済みです。
@tadsan さんからご指摘いただきました。
DateTime::createFromFormat()での書き方ありがとうございます。
デリミタが変更できるのは初めて知りました!
そもそもデリミタが何かを知りませんでした(^^;)
ありがとうございます。記事修正済みです。
@ktty1220 さんからご指摘いただきました。
explode()での書き方ありがとうございます。
確かに、区切り文字が同じなら、わざわざ正規表現使うは必要ないですね!
ありがとうございます。記事修正済みです。
以上。
他にもなにかご指摘有ればコメント下さいませ。