PHP 8: str_starts_with und str_ends_with – So prüfen Sie Anfang und Ende eines Strings

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Schluss mit Workarounds: str_starts_with und str_ends_with in PHP 8 kennenlernen

\n\n

Haben Sie jemals Code wie if (strpos($str, 'prefix') === 0) geschrieben und das Gefühl gehabt, dass das irgendwie umständlich aussieht? Oder haben Sie Zeit damit verbracht, substr($str, -3) === 'end' zu entschlüsseln, um das Ende eines Strings zu prüfen? Wenn ja – ich habe großartige Neuigkeiten für Sie. Seit PHP 8.0 gibt es in der Sprache zwei elegante und intuitiv verständliche Funktionen: str_starts_with() und str_ends_with().

\n\n

In diesem Artikel werden wir sie gründlich durchleuchten. Sie erfahren, wie sie funktionieren, wie sie sich von alten Ansätzen unterscheiden und warum Sie sie in jedem modernen PHP-Projekt verwenden sollten. Wir betrachten auch reale Beispiele aus der Entwicklerpraxis – von der URL-Überprüfung bis zur E-Mail-Validierung und der Arbeit mit Dateipfaden.

\n\n

Was sind str_starts_with() und str_ends_with()?

\n\n

Dies sind eingebaute PHP 8-Funktionen, mit denen Sie prüfen können, ob ein String mit einer bestimmten Teilzeichenkette beginnt oder endet. Sie geben einen booleschen Wert (true oder false) zurück, was sie ideal für die Verwendung in Bedingungen macht.

\n\n

Hier ist ihre grundlegende Syntax:

\n\n
str_starts_with(string $haystack, string $needle): bool\nstr_ends_with(string $haystack, string $needle): bool
\n\n

Wobei $haystack der String ist, den Sie prüfen, und $needle die Teilzeichenkette, die Sie am Anfang oder Ende suchen.

\n\n

Einfaches Beispiel

\n\n
<?php\n$string = "Hallo, Welt!";\n\n// Prüfen, ob der String mit "Hallo" beginnt\nif (str_starts_with($string, "Hallo")) {\n    echo "Der String beginnt mit 'Hallo'"; // Dieser Code wird ausgeführt\n}\n\n// Prüfen, ob der String mit "Welt!" endet\nif (str_ends_with($string, "Welt!")) {\n    echo "Der String endet mit 'Welt!'"; // Und dieser auch\n}\n?>
\n\n

Einfach, oder? Keine zusätzlichen Berechnungen, kein === 0 oder strlen(). Einfach prüfen und Ergebnis erhalten.

\n\n

Warum ist das wichtig? Probleme alter Ansätze

\n\n

Vor PHP 8 mussten Entwickler tricksen. Die gängigste Methode, den Anfang eines Strings zu prüfen, sah so aus:

\n\n
if (strpos($string, 'prefix') === 0) { ... }
\n\n

Was ist das Problem dabei? strpos() sucht die Teilzeichenkette überall im String, nicht nur am Anfang. Ja, die Prüfung === 0 filtert falsche Ergebnisse heraus, aber der Code selbst sagt nichts über die Absicht des Entwicklers aus. Sie sehen ihn an und denken: "Aha, er prüft, ob es beginnt mit... oder sucht er einfach?" – das verringert die Lesbarkeit.

\n\n

Und die Prüfung des String-Endes war noch weniger intuitiv:

\n\n
if (substr($string, -3) === 'end') { ... }
\n\n

Hier müssen Sie die genaue Länge der Teilzeichenkette kennen (-3), was zu Fehlern führt, wenn Sie eine falsche Zahl angeben. Außerdem: Wenn die Teilzeichenkette länger als der String selbst ist, gibt substr() einfach einen leeren String zurück, und die Bedingung wird nie erfüllt.

\n\n

Die neuen Funktionen str_starts_with() und str_ends_with() lösen all diese Probleme:

\n
    \n
  • Lesbarkeit: Der Code spricht für sich selbst.
  • \n
  • Zuverlässigkeit: Sie müssen nicht über die Länge der Teilzeichenkette oder leere Strings nachdenken.
  • \n
  • Leistung: Die Funktionen sind auf Kernel-Ebene von PHP optimiert.
  • \n
\n\n

Reale Anwendungsbeispiele in der Webentwicklung

\n\n

Schauen wir uns an, wo diese Funktionen in der Praxis nützlich sein können. Ich habe einige Szenarien ausgewählt, die Sie in Ihrer Arbeit sicherlich schon gesehen haben.

\n\n

1. Prüfung von URL-Präfixen (Routing, Weiterleitungen)

\n\n

Angenommen, Sie schreiben einen einfachen Router und möchten URLs verarbeiten, die mit /admin beginnen:

\n\n
<?php\n$uri = $_SERVER['REQUEST_URI'];\n\nif (str_starts_with($uri, '/admin')) {\n    echo "Sie sind im Admin-Bereich";\n    // Admin-Controller laden\n}                

Blogs

Buchempfehlungen