![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
うまく言葉にできないので、phpでやりたいことを具体的に羅列してみました。
1980年1月1日→19800101
1980年1月11日→19800111
1980年11月1日→19801101
1980年11月11日→19801111
MYSQLには上記のように○○○○年○月○日という形式で保存されています。
そのデータをPHPで○○○○○○○○という8桁の数字にしたいと思っています。
困っているのが1月の人もいれば11月の人もおり、1日の人もいれば11日の人もいるため
1桁のところにゼロを追加したいのですが、その方法が分かりません。
どうかよろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
例えばこう書き換えてみては?
$pattern="/(\d{2,4})年(\d{1,2})月(\d{1,2})日/";
$replacement=function($x){
return $x[1]*10000+$x[2]*100+$x[3];
};
foreach(array("1980年100月100日","1980年1月1日","1980年1月11日","1980年11月1日","1980年11月11日") as $val){
print preg_replace_callback($pattern,$replacement,$val)."<br>";
}
ちなみに5.3となると相当環境が古いので7とは言わないのでせめて5.6くらいまでは
アップグレードしておいたほうがよいでしょう。
ありがとうございます!今度はちゃんと動作し、思い通りの表示にすることができました。
ただ、同じプログラムを別のサーバーでも動かしているのですが、そちらはPHP5.1.6だったためか、うまく表示することができませんでした。
しかもそちらのサーバーではエラー表示をしない設定にしているため、どこでダメになったのかまで分かりませんでした。
PHP5.1.6だと教えていただいたプログラムは難しいのでしょうか?
何度も申し訳ございませんが、よろしくお願いいたします。
No.5
- 回答日時:
<?php
$arr = array("1980年11月9日","1980年1月11日","1980年11月1日","1980年11月11日");
$now_year = date('Y');
$now_monthday = date('md');
foreach($arr as $str) {
$time = strtotime(preg_replace("/¥D+/","-",$str)."0");
$date = date("Ymd",$time);
$year = date("Y",$time);
$monthday = date("md",$time);
$age = $now_year-$year-($now_monthday<$monthday?1:0);
printf("%s→%s Age%s¥n",$str,$date,$age);
}
ありがとうございます。
コピペしてみたところ、
1980年11月9日→19700101 Age48¥n1980年1月11日→19700101 Age48¥n1980年11月1日→19700101 Age48¥n1980年11月11日→19700101 Age48¥n
という結果になってしまいました。
No.3
- 回答日時:
> Parse error: syntax error, unexpected '['
> というエラーが出てしまいました。
まさかとは思いますが、相当古いPHPで処理してたりします?
バージョンわかりませんか?
No.1
- 回答日時:
こんな感じ
$pattern="/(\d{2,4})年(\d{1,2})月(\d{1,2})日/";
$replacement=function($x){
return $x[1]*10000+$x[2]*100+$x[3];
};
foreach(["1980年100月100日","1980年1月1日","1980年1月11日","1980年11月1日","1980年11月11日"] as $val){
print preg_replace_callback($pattern,$replacement,$val)."<br>";
}
ありがとうございました。
そのままコピペしてみたのですが、
foreach(["1980年100月100日","1980年1月1日","1980年1月11日","1980年11月1日","1980年11月11日"] as $val){
の行で
Parse error: syntax error, unexpected '['
というエラーが出てしまいました。
本当は下記ページのように「PHPで生年月日から現在の年齢を算出する」ということをやりたかったのですが
https://hacknote.jp/archives/17285/
DBに格納してあるデータが1990-10-30形式ではなく、文字列として○○○○年○月○日というものだったため、遠まわしに質問してしまった次第です。
○○○○年○月○日という文字列からダイレクトに現在の年齢を算出する方法があればいいのですが、ネットで調べても出てきませんでした。
ややこしくて申し訳ありませんが、もしお分かりになるようでしたらあわせて教えていただけると幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式で教えてください。 2 2022/12/23 14:57
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/01/10 09:15
- Excel(エクセル) Excelにて、下記のようなデータを月だけ変えて下にドラックしていきたいです。どうすれば良いですか? 3 2022/12/25 22:02
- Excel(エクセル) エクセルの数式で教えてください。 3 2022/12/22 17:29
- Excel(エクセル) エクセルの日付表示を変換するやり方をご存じの方は教えて下さい。 7 2022/12/28 15:43
- その他(Microsoft Office) エクセルの休日について教えてください。 1 2023/01/06 15:45
- 郵便・宅配 ヤマト運輸コレクト便の受け取りについて 1 2022/11/02 04:27
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- サッカー・フットサル 三苫絶好調ですね!ところで、サッカー生観戦したことありますか? 1 2023/02/05 16:29
- ハローワーク・職業安定所 失業保険での2年間の定義 2 2023/02/24 21:16
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
開始と終了を指定して、その間...
-
昨日の日付を取得するVBscript
-
substrの使い方について教えて...
-
PHP 日付の加算について
-
ファイル名に日付の挿入
-
strtotime 前月・前々月の表示
-
リンクを時間によって表示・非...
-
<? print (date ("H時i分s秒"));?>
-
アップロードしたファイル名に...
-
A月11日~B月10日期間内を表示...
-
日付の計算できる関数は無いで...
-
現在時刻をyyyymmddhhmmss形式...
-
昨日の日付名でファイルを作成...
-
PHPで指定した日付の1ケ月前表示
-
最後の段階で詰まっています。R...
-
PHPで以下のような占いプログラ...
-
PHPについて質問です。
-
日付データを比較して出力したい!
-
日付計算について
-
MovableTypeで、ある日付を過ぎ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
開始と終了を指定して、その間...
-
昨日の日付を取得するVBscript
-
ファイル名に日付の挿入
-
C言語を使って、ある特定の日の...
-
アップロードしたファイル名に...
-
C言語でシステム日付との差を...
-
昨日の日付名でファイルを作成...
-
現在時刻をyyyymmddhhmmss形式...
-
今日の日付から1週間のリスト
-
PHP 指定した期間だけ表示した...
-
差分の月数を算出する方法
-
日付によって画像を変える
-
プルダウンメニューの値をDBに...
-
MYSQLの日付から現在までの年数...
-
月曜日から始まる週間カレンダ...
-
Java Scriptで、ある日付に加算...
-
PHPでn日後を計算したい
-
MS-DOSコマンドのリダイ...
-
日付が変わるとカウントアップ
-
改行されないカレンダー(PHP)
おすすめ情報