Heim > Artikel > Backend-Entwicklung > Wie kann man in PHP zuverlässig prüfen, ob eine Variable eine Ganzzahl darstellt?
Bei der Arbeit mit Benutzereingaben ist es wichtig, die Daten zu validieren, um ihre Integrität sicherzustellen. Eine häufige Validierungsaufgabe besteht darin, zu prüfen, ob eine Variable eine Ganzzahl darstellt. Zu diesem Zweck stellt PHP die Funktion is_int() bereit, die jedoch möglicherweise nicht immer die gewünschten Ergebnisse liefert.
Die Verwendung von is_int() kann zu Fehlalarmen führen für Werte, die als Ganzzahlen erscheinen, von der Funktion aber nicht als solche erkannt werden. Stellen Sie sich zum Beispiel den Fall vor, dass ein Benutzer „1“ als Seitenzahl eingibt:
<code class="php">$page = $_GET['p'];</code>
In diesem Fall wird $page die Zeichenfolge „1“ zugewiesen, was zu is_int($page führt ) gibt false zurück.
Um zuverlässig zu überprüfen, ob eine Variable eine Ganzzahl ist, sollten Sie alternative Methoden verwenden, die genauere Ergebnisse liefern:
Der FILTER_VALIDATE_INT-Filter kann verwendet werden, um ganzzahlige Eingaben zu validieren:
<code class="php">if (filter_var($page, FILTER_VALIDATE_INT) === false) { // Not an integer }</code>
Ausgabe:
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 ✔
Der Vergleich der Zeichenfolgendarstellung einer Variablen mit ihrer Ganzzahldarstellung kann auch zeigen, ob es sich um eine Ganzzahl handelt:
<code class="php">if (strval($page) !== strval(intval($page))) { // Not an integer }</code>
Ausgabe:
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 ✔
Mit der Funktion ctype_digit können Sie nach positiven Zahlen und 0 suchen:
<code class="php">if (!ctype_digit(strval($page))) { // Not an integer }</code>
Ausgabe:
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 ✔
Reguläre Ausdrücke können auch zur Validierung von Ganzzahlen verwendet werden:
<code class="php">if (!preg_match('/^-?\d+$/', $page)) { // Not an integer }</code>
Ausgabe:
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 ✔
Das obige ist der detaillierte Inhalt vonWie kann man in PHP zuverlässig prüfen, ob eine Variable eine Ganzzahl darstellt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!