Benar-benar tidak ada cara yang sesuai untuk memvalidasi bidang tanggal, yang dapat Anda lakukan adalah membaginya dan memeriksanya di bagian ..
Ada checkdate()
, tetapi seperti yang disebutkan dalam komentar di halaman dokumen itu tidak dapat digunakan sebagai sarana yang efektif untuk membersihkan input tanggal.
Hal pertama yang biasanya saya periksa adalah jenis data, jika mengharapkan string kemudian dilemparkan ke string dan juga untuk nilai integer dan array.
// Casting example
$string = (string) $string;
$num = (int) $num;
$array = (array) $array;
Untuk bidang tanggal Anda biasanya memiliki pemisah antara setiap bagian tanggal, dibagi berdasarkan itu dan melemparkan bagian-bagian (berapa banyak yang Anda harapkan) sebagai bilangan bulat.
$date = explode( '/', (string) $string );
$date = array_map( 'intval', $date );
// Now count the parts and validate them further - eg. you don't want negative values
Tentu saja ini benar-benar tergantung pada bagaimana Anda menyimpan tanggal dan apa yang Anda harapkan di bidang itu, itu adalah sesuatu yang Anda hanya perlu membersihkan dengan tepat sesuai dengan kebutuhan spesifik Anda.
Nilai numerik cukup mudah, pertama dilemparkan ke ..
$num = (int) $var_with_num;
// Or
$num = absint( $var_with_expected_non_negative_num ); // absint is a WordPress function
Kemudian periksa apakah itu dalam kisaran yang Anda berikan (per pertanyaan Anda).
// If it's not in range
if( $num < 100 || $num > 500 ) {
// Number is not in range
}
atau..
// If it is in range - including 100 & 500 as possible values
if( $num >= 100 && $num <= 500 ) {
// Number is in range
}
Memeriksa apakah sebuah string memiliki panjang tertentu itu mudah, sebenarnya sangat mudah. Saya hanya akan menghubungkan Anda ke doktrin PHP untuk strlen.
http://php.net/manual/en/function.strlen.php
Nilai tanggal adalah yang paling sulit menurut saya, tetapi sebenarnya ini adalah kasus penulisan kode Anda sesuai dengan apa yang Anda harapkan dari bidang itu. Jika Anda memiliki bidang dengan format tanggal D/M/Y
misalnya, Anda tahu bahwa /
(garis miring) akan (harus) ada dan bahwa pemisahan pada delimeter itu akan memberi Anda array 3 nilai numerik ... (jika pemisahan tidak t memberi Anda 3 nilai, atau nilai numerik yang tidak valid, maka data tidak valid) ..
Semoga itu bisa membantu .. (dan saya terbuka untuk kritik jika ada yang punya metode yang lebih baik untuk hal-hal di atas).