Saya memiliki fungsi isNotEmpty yang mengembalikan true jika string tidak kosong dan salah jika string kosong. Saya menemukan bahwa itu tidak berfungsi jika saya melewati string kosong melewatinya.
function isNotEmpty($input)
{
$strTemp = $input;
$strTemp = trim($strTemp);
if(strTemp != '') //Also tried this "if(strlen($strTemp) > 0)"
{
return true;
}
return false;
}
Validasi string menggunakan isNotEmpty dilakukan:
if(isNotEmpty($userinput['phoneNumber']))
{
//validate the phone number
}
else
{
echo "Phone number not entered<br/>";
}
Jika string kosong, yang lain tidak dieksekusi, saya tidak mengerti mengapa, bisakah seseorang tolong jelaskan hal ini?
php
string
validation
bgosalci
sumber
sumber
Jawaban:
Sebenarnya masalah sederhana. Perubahan:
untuk
Mungkin Anda juga ingin mengubahnya menjadi:
karena
!= ''
akan mengembalikan true jika Anda lulus adalah angka 0 dan beberapa kasus lain karena konversi jenis otomatis PHP .Anda seharusnya tidak menggunakan fungsi built-in empty () untuk ini; lihat komentar dan tabel perbandingan jenis PHP .
sumber
PHP memiliki fungsi bawaan
empty()
yang disebut tes ini dilakukan dengan mengetikkanif(empty($string)){...}
Referensi php.net: php kosongsumber
Saya selalu menggunakan ekspresi reguler untuk memeriksa string kosong, dating kembali ke CGI / Perl hari, dan juga dengan Javascript, jadi mengapa tidak dengan PHP juga, misalnya (walaupun belum teruji)
Di mana \ S mewakili karakter non-spasi putih
sumber
.
tidak cocok dengan baris baru -[\s\S]
adalah peretas di sekitar masalah itu. Ini umum dalam JavaScript, tetapi dalam PHP Anda dapat menggunakan/s
bendera untuk membuat titik cocok dengan semua karakter. Dan stackoverflow.com/a/4544646/5411817 menyebutkan:(?s)
menyalakans
mode dan(?-s)
mematikan jika mati. Setelah dimatikan, setiap pengikut.
tidak akan cocok dengan baris baru. jika Anda ingin menghidupkan / mematikan sakelar inline (disematkan di dalam regex) alih-alih sebagai flag regex.Di
if
klausa Anda dalam fungsi, Anda merujuk ke variabelstrTemp
yang tidak ada.$strTemp
memang ada.Tetapi PHP sudah memiliki
empty()
fungsi yang tersedia; mengapa membuat sendiri?Dari php.net:
http://www.php.net/empty
sumber
PHP mengevaluasi string kosong menjadi false, sehingga Anda dapat menggunakan:
sumber
Cukup gunakan fungsi strlen ()
sumber
Php 5.3
fungsi akan kembali5
jika$s
bertipearray
.Php > 5.3
akan muncul pengecualian. Saya sarankan menggunakanis_string($s) && str_len($s) > 0
.>0
hanya untuk tujuan membaca.Saya hanya menulis fungsi saya sendiri, is_string untuk memeriksa jenis dan strlen untuk memeriksa panjang.
Inilah tes kecil repl.it
EDIT: Anda juga dapat menggunakan fungsi trim untuk menguji apakah string juga kosong.
sumber
Saya perlu menguji bidang kosong di PHP dan digunakan
yang bekerja dengan baik untuk saya.
sumber
Nah di sini adalah metode singkat untuk memeriksa apakah string kosong atau tidak.
sumber
strlen()
direkomendasikan pada 2014 di halaman ini. Jawaban Anda tidak menambah nilai baru.Anda bisa langsung melakukan bool, jangan lupa untuk menangani nol.
sumber
(bool)$str
sama dengan melakukan!empty($str)
, dan memiliki masalah yang sama dengan'0'
. Baca PHP Booleans , bagian "Konversi ke boolean". Juga, Anda mendapatkannya mundur - seharusnya!(bool)$string'
. Atau fungsi Anda harus dinamai "isNotEmpty". Apapun, Anda terjebak dengan penanganan yang salah dari '0'.0
masalah, hanya menangani itu sebelum mengembalikan string yang dicor. Dan terima kasih banyak, saya lupa negasi!
(nama fungsi yang dinegasikan adalah praktik buruk). Mengedit pos saya.Saya tahu utas ini sudah sangat lama tetapi saya hanya ingin berbagi salah satu fungsi saya. Fungsi di bawah ini dapat memeriksa string kosong, string dengan panjang maksimum, panjang minimum, atau panjang tepat. Jika Anda ingin memeriksa string kosong, cukup masukkan $ min_len dan $ max_len sebagai 0.
sumber
mungkin kamu bisa coba ini
itu karena konfigurasi php di php.ini
sumber
jika Anda memiliki bidang yaitu serial_number dan ingin memeriksa kosong maka
dengan cara ini Anda dapat chek semua file dalam loop dengan fungsi kosong lainnya
sumber
empty()
sudah direkomendasikan di halaman ini pada tahun 2009.ini adalah solusi singkat dan efektif, persis apa yang Anda cari:
sumber
null
ke string kosong untuk perbandingan. Dalam hal ini, itu akan menjadi jauh lebih jelas untuk mengatakan apa yang Anda maksud:$input > ''
. Artinya, "melakukan perbandingan leksikal antara string input dan string kosong". Atau mengabaikan spasi di ujung:trim($input) > ''
.$input
adalah'0'
. Tidak jelas apakah php melakukannumeric
ataulexical
membandingkan, ketika argumen pertama adalah string numerik.Anda mendapat jawaban tetapi dalam kasus Anda, Anda dapat menggunakan
atau
sumber
empty("0")
empty
- jawaban ini telah diberikan, jadi mengatakannya lagi tidak berkontribusi apa pun. Lebih buruk, seperti yang telah dibahas dalam komentar, itu salah - nilai apa pun yang setara0
akan dianggap "kosong". 2.is_string
salah dalam cara yang berbeda - string kosong''
adalah string, jadi akan mengembalikan true dalam kasus itu - gagal melakukan pertanyaan apa yang diajukan.