W3docs

strchr()

Unser Artikel behandelt die PHP-Funktion strchr(), die das erste Vorkommen eines Zeichens in einem String sucht und den Rest zurückgibt.

Die PHP-Funktion strchr() sucht das erste Vorkommen eines Teilstrings in einem String und gibt den Rest des Strings ab dieser Stelle zurück. Trotz ihres Namens (der an Cs strchr erinnert) kann die gesuchte „Nadel" mehr als ein einzelnes Zeichen umfassen. Diese Seite beschreibt die Syntax, das optionale Flag $before_needle, den Rückgabewert false, gegen den Sie sich absichern müssen, und wie strchr() mit ähnlichen String-Funktionen zusammenhängt.

Syntax

strchr(string $haystack, string $needle, bool $before_needle = false): string|false

Die Funktion nimmt drei Parameter entgegen:

  • $haystack — der zu durchsuchende String.
  • $needle — der gesuchte Teilstring. Enthält er mehr als ein Zeichen, sucht strchr() nach dem gesamten Teilstring.
  • $before_needle (optional) — bei false (dem Standardwert) wird der Teil des Strings ab dem Treffer zurückgegeben; bei true wird der Teil vor dem Treffer zurückgegeben. Hinzugefügt in PHP 5.3.

Die Funktion gibt den übereinstimmenden Teil von $haystack als String zurück oder false, wenn $needle nicht gefunden wird.

Einfaches Beispiel

php— editable, runs on the server

strchr() findet das erste "o" in "Hello World" und gibt den Rest des Strings ab diesem Zeichen zurück:

o World

Den Teil vor dem Treffer zurückgeben

Übergeben Sie true als drittes Argument, um alles vor dem ersten Vorkommen zu erhalten:

<?php
$string = "Hello World";
$result = strchr($string, "o", true);
echo $result;
?>
Hell

Dies ist praktisch, um einen String an einem Trennzeichen aufzuteilen — zum Beispiel, um den lokalen Teil einer E-Mail-Adresse zu extrahieren, indem alles vor "@" genommen wird.

Umgang mit „nicht gefunden"

Wenn die Nadel fehlt, gibt strchr() false zurück — nicht einen leeren String. Da false als nichts ausgegeben wird, kann ein ungeprüftes Ergebnis stillschweigend eine leere Ausgabe erzeugen. Testen Sie daher explizit:

<?php
$result = strchr("Hello World", "z");
if ($result === false) {
    echo "Not found";
} else {
    echo $result;
}
?>
Not found

Verwenden Sie den strikten Vergleich ===: Ein erfolgreicher Treffer könnte selbst der String "0" sein, den == als falsy behandeln würde.

strchr() im Vergleich zu ähnlichen Funktionen

  • strstr()strchr() ist lediglich ein Alias von strstr(); beide verhalten sich identisch. strstr() ist der gebräuchlichere Name.
  • strpos() — gibt die ganzzahlige Position des ersten Treffers zurück (oder false), anstatt den übereinstimmenden Teilstring. Verwenden Sie diese Funktion, wenn Sie einen Index für substr() oder andere versatzbasierte Logik benötigen.
  • substr() — extrahiert einen Teil eines Strings anhand eines numerischen Versatzes und einer Länge, ohne zu suchen.
  • stristr() — das Pendant zu strstr()/strchr() ohne Berücksichtigung der Groß- und Kleinschreibung.

Zusammenfassung

strchr() findet das erste Vorkommen einer Nadel in einem String und gibt den Rest des Strings zurück (oder bei $before_needle gleich true den Teil davor). Denken Sie daran, dass es ein Alias von strstr() ist, dass die Nadel ein mehrteiliger Teilstring sein kann und dass false zurückgegeben wird — was Sie mit === prüfen sollten —, wenn nichts gefunden wird.

Übungen

Übung
Was macht die strchr()-Funktion in PHP?
Was macht die strchr()-Funktion in PHP?
Was this page helpful?