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|falseDie Funktion nimmt drei Parameter entgegen:
$haystack— der zu durchsuchende String.$needle— der gesuchte Teilstring. Enthält er mehr als ein Zeichen, suchtstrchr()nach dem gesamten Teilstring.$before_needle(optional) — beifalse(dem Standardwert) wird der Teil des Strings ab dem Treffer zurückgegeben; beitruewird 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
strchr() findet das erste "o" in "Hello World" und gibt den Rest des Strings ab diesem Zeichen zurück:
o WorldDen 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;
?>HellDies 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 foundVerwenden 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 vonstrstr(); beide verhalten sich identisch.strstr()ist der gebräuchlichere Name.strpos()— gibt die ganzzahlige Position des ersten Treffers zurück (oderfalse), anstatt den übereinstimmenden Teilstring. Verwenden Sie diese Funktion, wenn Sie einen Index fürsubstr()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 zustrstr()/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.