W3docs

is_string()

Die Funktion is_string() in PHP prüft, ob eine Variable vom Typ string ist. Sie gibt true oder false zurück.

Einführung

is_string() ist eine eingebaute PHP-Funktion, die angibt, ob ein Wert vom Typ string ist. Ein String ist ein Datentyp, der eine Zeichenfolge enthält, wie z. B. "hello" oder "42".

Da PHP schwach typisiert ist, hängt der Typ eines Wertes oft davon ab, woher er stammt – aus Formulareingaben, einer Datenbank, einer JSON-Nutzlast oder dem Rückgabewert einer Funktion. is_string() erlaubt es, zu prüfen, ob ein Wert wirklich ein String ist, bevor man String-spezifische Operationen darauf anwendet (wie strtoupper() oder substr()), um Typfehler und unerwartete Ergebnisse zu vermeiden.

Diese Seite behandelt die Syntax, was is_string() für jeden PHP-Typ zurückgibt, die häufige Falle mit „numerischen Strings" und den Unterschied zu verwandten Funktionen wie is_numeric() und gettype().

Syntax

is_string(mixed $value): bool
  • $value — die Variable oder der Ausdruck, der geprüft werden soll.
  • Rückgabewerttrue, wenn $value ein String ist, false für jeden anderen Typ.

is_string() prüft den Typ, nicht den Inhalt. Es wird immer nur ein Wert gleichzeitig geprüft und niemals konvertiert.

Grundlegendes Beispiel

php— editable, runs on the server

$var1 ist ein String, daher gibt is_string() true zurück; $var2 ist ein Float, daher gibt es false zurück.

Tipp: Verwende var_dump() statt echo, wenn du boolesche Ergebnisse testest. echo true gibt 1 aus, aber echo false gibt gar nichts aus – was ein false-Ergebnis leicht übersehen lässt. var_dump() zeigt bool(true) / bool(false) explizit an.

Was is_string() für jeden Typ zurückgibt

Nur echte Strings bestehen die Prüfung – Zahlen, boolesche Werte, null und Arrays geben alle false zurück, auch wenn sie wie Strings aussehen.

<?php
var_dump(is_string("hello"));      // bool(true)
var_dump(is_string("42"));         // bool(true)  — a digit string is still a string
var_dump(is_string(42));           // bool(false) — integer
var_dump(is_string(3.14));         // bool(false) — float
var_dump(is_string(true));         // bool(false) — boolean
var_dump(is_string(null));         // bool(false) — null
var_dump(is_string(['a', 'b']));   // bool(false) — array
?>

Die wichtigste Erkenntnis: is_string("42") ist true. Die Anführungszeichen machen es zu einem String aus Ziffern, nicht zu einer Zahl.

Praktische Anwendung: Absicherung vor String-Operationen

Eine typische Verwendung ist die Validierung eines Wertes, bevor String-Funktionen darauf angewendet werden, damit nicht vertrauenswürdige oder gemischt typisierte Eingaben keinen TypeError auslösen können.

<?php
function shout($value): string {
    if (!is_string($value)) {
        return "Not a string";
    }
    return strtoupper($value) . "!";
}

echo shout("hello") . "\n"; // HELLO!
echo shout(123) . "\n";     // Not a string
?>

is_string() vs. is_numeric()

Diese beiden Funktionen werden oft verwechselt, weil numerische Strings zwischen ihnen liegen. is_string() fragt „ist dies der Typ string?", während is_numeric() fragt „repräsentiert dieser Wert eine Zahl?" – und ein numerischer String beantwortet beide Fragen mit Ja.

<?php
$value = "42";

var_dump(is_string($value));  // bool(true)  — it IS a string
var_dump(is_numeric($value)); // bool(true)  — and it looks like a number
?>

Wenn du speziell einen Integer- oder Float-Typ (und keinen String) benötigst, verwende is_int() oder is_float(). Um einen Wert in einen String zu konvertieren, statt ihn nur zu prüfen, siehe settype() oder strval().

Fazit

is_string() ist eine einfache, zuverlässige Typprüfung: Sie gibt true nur für Werte zurück, die tatsächlich vom Typ string sind, und false für alles andere. Verwende sie immer dann, wenn du sicherstellen möchtest, dass ein Wert ein String ist, bevor du String-Operationen darauf anwendest – beispielsweise bei der Verarbeitung von Benutzereingaben, API-Antworten oder Daten, deren Typ nicht garantiert ist. Merke dir die zwei Fallstricke: Eine zitierte Zahl wie "42" ist ein String, und du solltest Ergebnisse mit var_dump() statt echo prüfen, damit ein false nicht verschwindet. Für verwandte Prüfungen schaue dir is_numeric(), is_int(), is_array() und gettype() an.

Übungen

Übung
Welche der folgenden Aussagen über 'is_string' in PHP sind wahr?
Welche der folgenden Aussagen über 'is_string' in PHP sind wahr?
Was this page helpful?