PHPサンプル
UPDATE:2017年04月01日
日付を判別したい
正規表現 日付 の書式の判別 「preg_match()」
数値や論理値 = preg_match (パターン文字列, 入力文字列)
パターン文字列は、検索するパターンを表現する文字列です。入力文字列は検索する対象の文字列です。検索に一致すると数値の 1 を返し、一致しなかった場合 0 を返し、エラーが発生した場合は、 論理値 FALSE を返します。
日付の書式が正しいかどうか判別する正規表現
書式:2012/1/1
「数値4桁」/「数値1~2桁」/「数値1~2桁」の書式を判別しています。
1 2 3 4 5 6 7 8 | <!-- サンプルコード --> <?php //書式:2012/1/1 if(preg_match('/^([1-9][0-9]{3})\/([1-9]{1}|1[0-2]{1})\/([1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]{1})$/', $date)) {echo '<font color="blue">'.$date.' 正しい日付</font><br>';} else {echo '<font color="red">'.$date.' 不正な日付</font><br>';} ?> |
書式:2012/01/01
「数値4桁」/「数値2桁」/「数値2桁」の書式を判別しています。
1 2 3 4 5 6 7 8 | <!-- サンプルコード --> <?php //書式:2012/01/01 if(preg_match('/^([1-9][0-9]{3})\/(0[1-9]{1}|1[0-2]{1})\/(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]{1})$/', $date)) {echo '<font color="blue">'.$date.' 正しい日付</font><br>';} else {echo '<font color="red">'.$date.' 不正な日付</font><br>';} ?> |
日付が本当に正しいかどうか判別するには checkdate() を使用します。こちらを参照下さい。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | <!-- サンプルコード --> <h3>正規表現 日付の書式の判別 書式 2012/1/1</h3> <?php function yyyymd($date){ //書式 //2012/1/1 //年 //4桁整数 1000-9999 //月 //1桁の場合は 1-9 //2桁の場合は 10の位が1 1の位が0-2 //日 //1桁の場合は 1~9 //2桁の場合は 10の位が1と2 1の位が0-9 //2桁の場合は 10の位が3 1の位が0が1 if(preg_match('/^([1-9][0-9]{3})\/([1-9]{1}|1[0-2]{1})\/([1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]{1})$/', $date)) {echo '<font color="blue">'.$date.' 正しい日付</font><br>';} else {echo '<font color="red">'.$date.' 不正な日付</font><br>';} } echo '<h4>年が不正</h4>'; yyyymd('/1/1'); yyyymd('0/1/1'); yyyymd('1/1/1'); yyyymd('10/1/1'); yyyymd('100/1/1'); yyyymd('20a1/1/1'); yyyymd('0100/1/1'); yyyymd('20121/1/1'); echo '<h4>月が不正</h4>'; yyyymd('2012//1'); yyyymd('2012/0/1'); yyyymd('2012/13/1'); yyyymd('2012/100/1'); yyyymd('2012/1a/1'); yyyymd('2012/01/1'); echo '<h4>日が不正</h4>'; yyyymd('2012/1/'); yyyymd('2012/1/0'); yyyymd('2012/1/01'); yyyymd('2012/1/32'); yyyymd('2012/1/1a'); yyyymd('2012/1/100'); echo '<h4>1000日チェック</h4>'; for($i = 0; $i <= 1000; $i++){ $date = date('Y/n/j',mktime(0,0,0,date('n'),date('j')+$i,date('Y')-1)); yyyymd($date); } ?> <h3>正規表現 日付の書式の判別 書式 2012/01/01</h3> <?php function yyyymmdd($date){ //書式 //2012/1/1 //年 //4桁整数 1000-9999 //月 //1桁の場合は 01-09 //2桁の場合は 10の位が1 1の位が0-2 //日 //1桁の場合は 01~09 //2桁の場合は 10の位が1と2 1の位が0-9 //2桁の場合は 10の位が3 1の位が0が1 if(preg_match('/^([1-9][0-9]{3})\/(0[1-9]{1}|1[0-2]{1})\/(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]{1})$/', $date)) {echo '<font color="blue">'.$date.' 正しい日付</font><br>';} else {echo '<font color="red">'.$date.' 不正な日付</font><br>';} } echo '<h4>年が不正</h4>'; yyyymmdd('/1/1'); yyyymmdd('0/1/1'); yyyymmdd('1/1/1'); yyyymmdd('10/1/1'); yyyymmdd('100/1/1'); yyyymmdd('20a1/1/1'); yyyymmdd('0100/1/1'); yyyymmdd('20121/1/1'); echo '<h4>月が不正</h4>'; yyyymmdd('2012//1'); yyyymmdd('2012/0/1'); yyyymmdd('2012/13/1'); yyyymmdd('2012/100/1'); yyyymmdd('2012/1a/1'); yyyymmdd('2012/01/1'); echo '<h4>日が不正</h4>'; yyyymmdd('2012/1/'); yyyymmdd('2012/1/0'); yyyymmdd('2012/1/01'); yyyymmdd('2012/1/32'); yyyymmdd('2012/1/1a'); yyyymmdd('2012/1/100'); echo '<h4>1000日チェック</h4>'; for($i = 0; $i <= 1000; $i++){ $date = date('Y/m/d',mktime(0,0,0,date('n'),date('j')+$i,date('Y')-1)); yyyymmdd($date); } ?> |
実行結果
正規表現 日付の書式の判別 書式 2012/1/1
年が不正
/1/1 不正な日付
0/1/1 不正な日付
1/1/1 不正な日付
10/1/1 不正な日付
100/1/1 不正な日付
20a1/1/1 不正な日付
0100/1/1 不正な日付
20121/1/1 不正な日付
月が不正
2012//1 不正な日付
2012/0/1 不正な日付
2012/13/1 不正な日付
2012/100/1 不正な日付
2012/1a/1 不正な日付
2012/01/1 不正な日付
日が不正
2012/1/ 不正な日付
2012/1/0 不正な日付
2012/1/01 不正な日付
2012/1/32 不正な日付
2012/1/1a 不正な日付
2012/1/100 不正な日付
1000日チェック
・・・・
・・
・
タグ(=記事関連ワード)
日付
投稿日:2012年3月14日
最終更新日:2017年04月01日
最終更新日:2017年04月01日
このカテゴリの他のページ
この記事へのコメント
トラックバックurl
https://wepicks.net/phpsample-preg-date/trackback/