人間が読める形式に変更しようとしている動的な日付値がいくつかあります。私が取得する文字列のほとんどは、yyyymmdd
たとえば 20120514 のような形式ですが、そうでないものもあります。日付ではない可能性があるため、その形式でないものはスキップする必要があります。
このようなチェックをコードに追加するにはどうすればよいですか?
date("F j, Y", strtotime($str))
人間が読める形式に変更しようとしている動的な日付値がいくつかあります。私が取得する文字列のほとんどは、yyyymmdd
たとえば 20120514 のような形式ですが、そうでないものもあります。日付ではない可能性があるため、その形式でないものはスキップする必要があります。
このようなチェックをコードに追加するにはどうすればよいですか?
date("F j, Y", strtotime($str))
この関数を次の目的で使用できます。
/**
* Check to make sure if a string is a valid date.
* @param $str String under test
*
* @return bool Whether $str is a valid date or not.
*/
function is_date($str) {
$stamp = strtotime($str);
if (!is_numeric($stamp)) {
return FALSE;
}
$month = date('m', $stamp);
$day = date('d', $stamp);
$year = date('Y', $stamp);
return checkdate($month, $day, $year);
}
簡単なチェックのために、次のことを行う必要がctype_digit
ありstrlen
ます。
if(!ctype_digit($str) or strlen($str) !== 8) {
# It's not a date in that format.
}
あなたはより徹底的にすることができますcheckdate
:
function is_date($str) {
if(!ctype_digit($str) or strlen($str) !== 8)
return false;
return checkdate(substr($str, 4, 2),
substr($str, 6, 2),
substr($str, 0, 4));
}
正規表現を使用して、文字列が 8 桁かどうかを確認します。
if(preg_match('/^\d{8}$/', $date)) {
// This checks if the string has 8 digits, but not if it's a real date
}