Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Memeriksa dengan Amanah sama ada Pembolehubah Mewakili Integer dalam PHP?
Apabila bekerja dengan input pengguna, adalah penting untuk mengesahkan data untuk memastikan integritinya. Satu tugas pengesahan biasa ialah menyemak sama ada pembolehubah mewakili integer. PHP menyediakan fungsi is_int() untuk tujuan ini, tetapi ia mungkin tidak selalu menghasilkan hasil yang diingini.
Menggunakan is_int() boleh mengembalikan positif palsu untuk nilai yang kelihatan sebagai integer tetapi tidak diiktiraf oleh fungsi tersebut. Sebagai contoh, pertimbangkan kes di mana pengguna memasukkan "1" sebagai nombor halaman:
<code class="php">$page = $_GET['p'];</code>
Dalam kes ini, $page akan diberikan rentetan "1," yang akan menghasilkan is_int($page ) returning false.
Untuk menyemak dengan pasti sama ada pembolehubah ialah integer, pertimbangkan untuk menggunakan kaedah alternatif yang memberikan hasil yang lebih tepat:
Penapis FILTER_VALIDATE_INT boleh digunakan untuk mengesahkan input integer:
<code class="php">if (filter_var($page, FILTER_VALIDATE_INT) === false) { // Not an integer }</code>
Output:
TEST -1: -1 (type:integer) Your variable is an integer ✔ TEST 0 : 0 (type:integer) is an integer ✔ TEST 1 : 42 (type:integer) is an integer ✔ TEST 2 : 4.2 (type:double) is not an integer ✘ TEST 3 : 0.42 (type:double) is not an integer ✘ TEST 4 : 42 (type:double) is an integer ✔ TEST 5 : 42 (type:string) is an integer ✔ TEST 6 : a42 (type:string) is not an integer ✘ TEST 7 : 42a (type:string) is not an integer ✘ TEST 8 : 36 (type:integer) is an integer ✔ TEST 9 : 1337 (type:double) is an integer ✔
Membandingkan perwakilan rentetan pembolehubah dengan perwakilan integernya juga boleh mendedahkan sama ada ia adalah integer:
<code class="php">if (strval($page) !== strval(intval($page))) { // Not an integer }</code>
Output:
TEST -1: -1 (type:integer) Your variable is an integer ✔ TEST 0 : 0 (type:integer) is an integer ✔ TEST 1 : 42 (type:integer) is an integer ✔ TEST 2 : 4.2 (type:double) is not an integer ✘ TEST 3 : 0.42 (type:double) is not an integer ✘ TEST 4 : 42 (type:double) is an integer ✔ TEST 5 : 42 (type:string) is an integer ✔ TEST 6 : a42 (type:string) is not an integer ✘ TEST 7 : 42a (type:string) is not an integer ✘ TEST 8 : 36 (type:integer) is an integer ✔ TEST 9 : 1337 (type:double) is an integer ✔
Menggunakan fungsi ctype_digit, anda boleh menyemak nombor positif dan 0:
<code class="php">if (!ctype_digit(strval($page))) { // Not an integer }</code>
Output:
TEST -1: -1 (type:integer) # Your variable is not an integer ✘ TEST 0 : 0 (type:integer) is an integer ✔ TEST 1 : 42 (type:integer) is an integer ✔ TEST 2 : 4.2 (type:double) is not an integer ✘ TEST 3 : 0.42 (type:double) is not an integer ✘ TEST 4 : 42 (type:double) is an integer ✔ TEST 5 : 42 (type:string) is an integer ✔ TEST 6 : a42 (type:string) is not an integer ✘ TEST 7 : 42a (type:string) is not an integer ✘ TEST 8 : 36 (type:integer) is an integer ✔ TEST 9 : 1337 (type:double) is an integer ✔
Ungkapan biasa juga boleh digunakan untuk mengesahkan integer:
<code class="php">if (!preg_match('/^-?\d+$/', $page)) { // Not an integer }</code>
Output:
TEST -1: -1 (type:integer) Your variable is an integer ✔ TEST 0 : 0 (type:integer) is an integer ✔ TEST 1 : 42 (type:integer) is an integer ✔ TEST 2 : 4.2 (type:double) is not an integer ✘ TEST 3 : 0.42 (type:double) is not an integer ✘ TEST 4 : 42 (type:double) is an integer ✔ TEST 5 : 42 (type:string) is an integer ✔ TEST 6 : a42 (type:string) is not an integer ✘ TEST 7 : 42a (type:string) is not an integer ✘ TEST 8 : 36 (type:integer) is an integer ✔ TEST 9 : 1337 (type:double) is an integer ✔
Atas ialah kandungan terperinci Bagaimana untuk Memeriksa dengan Amanah sama ada Pembolehubah Mewakili Integer dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!