Karena PHP adalah bahasa yang dinamis, apa cara terbaik untuk memeriksa untuk melihat apakah bidang yang disediakan kosong?
Saya ingin memastikan bahwa:
- null dianggap sebagai string kosong
- string white space only dianggap kosong
- bahwa "0" tidak dianggap kosong
Inilah yang saya dapatkan sejauh ini:
$question = trim($_POST['question']);
if ("" === "$question") {
// Handle error here
}
Harus ada cara yang lebih sederhana untuk melakukan ini?
php
validation
Allain Lalonde
sumber
sumber
Jawaban:
sumber
Posting lama tetapi seseorang mungkin membutuhkannya seperti saya;)
ganti
$str
dengan variabel Anda.NULL
dan""
keduanya mengembalikan 0 saat menggunakanstrlen
.sumber
if(strcmp('', $var) == 0)...
Gunakan fungsi PHP kosong (). Hal-hal berikut dianggap kosong
Untuk lebih jelasnya periksa fungsi kosong
sumber
Saya akan dengan rendah hati menerima jika saya salah, tetapi saya menguji sendiri dan menemukan bahwa berikut ini berfungsi untuk menguji kedua string (0) "" dan variabel bernilai NULL:
Yang juga dapat dibalik untuk menguji kesuksesan seperti:
sumber
Hati-hati negatif palsu dari
trim()
fungsi - ia melakukan cast-to-string sebelum pemangkasan, dan dengan demikian akan mengembalikan misalnya "Array" jika Anda memberikannya array kosong. Itu mungkin bukan masalah, tergantung pada bagaimana Anda memproses data Anda, tetapi dengan kode yang Anda berikan, bidang bernamaquestion[]
bisa diberikan dalam data POST dan tampaknya bukan string kosong. Sebaliknya, saya akan menyarankan:sumber
Tidak ada cara yang lebih baik tetapi karena ini adalah operasi yang biasanya Anda lakukan cukup sering, Anda sebaiknya mengotomatiskan prosesnya.
Sebagian besar kerangka kerja menawarkan cara untuk membuat argumen parsing tugas yang mudah. Anda dapat membangun objek sendiri untuk itu. Contoh cepat dan kotor:
Symfony menggunakan gula semacam itu secara besar-besaran.
Tetapi Anda berbicara lebih dari itu, dengan "// Menangani kesalahan di sini". Anda mencampur 2 pekerjaan: mendapatkan data dan memprosesnya. Ini tidak sama sekali.
Ada mekanisme lain yang dapat Anda gunakan untuk memvalidasi data. Sekali lagi, kerangka kerja dapat menunjukkan Anda praktik terbaik.
Buat objek yang mewakili data formulir Anda, lalu lampirkan proses dan kembali ke sana. Kedengarannya jauh lebih banyak pekerjaan yang meretas skrip PHP cepat (dan ini adalah pertama kalinya), tetapi itu dapat digunakan kembali, fleksibel, dan jauh lebih rentan kesalahan karena validasi bentuk dengan PHP biasa cenderung dengan cepat menjadi kode spaguetti.
sumber
Yang ini memeriksa array dan string:
sumber
untuk menjadi lebih kuat (tabulasi, kembali ...), saya mendefinisikan:
sumber:
sumber
Saat Anda ingin memeriksa apakah suatu nilai disediakan untuk suatu bidang, bidang itu mungkin a
string
, anarray
, atau tidak terdefinisi. Jadi, berikut ini sudah cukupsumber
kosong () digunakan untuk bekerja untuk ini, tetapi perilaku kosong () telah berubah beberapa kali. Seperti biasa, dokumen php selalu menjadi sumber terbaik untuk perilaku yang tepat dan komentar pada halaman tersebut biasanya memberikan sejarah perubahan yang baik dari waktu ke waktu. Jika Anda ingin memeriksa kekurangan properti objek, metode yang sangat defensif saat ini adalah:
sumber