„Und nun etwas genauer“: Wie findet man in PHP heraus, womit ein String beginnt?
\n\nJeder Entwickler stand mindestens einmal im Leben vor der Aufgabe: „Beginnt dieser String nicht mit einem bestimmten Wort, Zeichen oder Präfix?“. Es scheint eine Kleinigkeit zu sein, aber davon kann die Logik des Routings, die URL-Überprüfung, die E-Mail-Validierung oder die Analyse von Benutzereingaben abhängen. In PHP gibt es, wie in jeder anderen Sprache auch, mehrere Möglichkeiten, diese Aufgabe zu lösen. Aber welche ist die richtige? Und welche ist die leistungsfähigste? Und was tun, wenn Sie eine alte PHP-Version haben?
\n\nIn diesem Artikel analysieren wir alle gängigen Methoden zur Überprüfung des Zeichenfolgenanfangs in PHP, angefangen bei Klassikern wie substr und strpos bis hin zum modernen str_starts_with, das in PHP 8.0 eingeführt wurde. Sie erfahren nicht nur „wie“, sondern auch „warum“ Sie sich für die eine oder andere Methode entscheiden sollten. Los geht‘s! 🚀
Warum überhaupt den Zeichenfolgenanfang prüfen?
\n\nStellen Sie sich vor, Sie schreiben einen Log-Parser, verarbeiten URLs oder filtern Dateien nach Erweiterung. Oder vielleicht müssen Sie alle E-Mail-Adressen aussortieren, die mit „admin@“ beginnen. Oder prüfen, ob eine Anfrage an die API mit dem richtigen Präfix kam. In all diesen Fällen brauchen Sie eines: herauszufinden, ob ein String eine bestimmte Teilzeichenfolge ganz am Anfang enthält.
\n\nDie Aufgabe scheint trivial, aber die Unkenntnis von Nuancen kann zu Fehlern führen, die schwer zu finden sind. Besonders wenn Sie versehentlich strpos ohne Prüfung auf false verwenden. Lassen Sie uns jede Methode der Reihe nach durchgehen.
Methode Nr. 1: str_starts_with (PHP 8.0+) – modern und offensichtlich
\n\nSeit PHP 8.0 gibt es in der Sprache die spezielle Funktion str_starts_with(). Sie tut genau das, was auf der Verpackung steht: Sie prüft, ob ein String mit einer bestimmten Teilzeichenfolge beginnt. Und das tut sie schnell, lesbar und ohne Fallstricke.
<?php\n$url = "https://pythonlib.ru";\nif (str_starts_with($url, "https://")) {\n echo "Der String beginnt mit https://";\n} else {\n echo "Der String beginnt NICHT mit https://";\n}\n// Gibt aus: Der String beginnt mit https://\n?>\n\nWarum ist das großartig?
\n- \n
- ✅ Der Code liest sich wie normaler englischer Text: „string starts with“. \n
- ✅ Gibt nur
trueoderfalsezurück – keine zusätzlichen Prüfungen nötig. \n - ✅ Funktioniert korrekt mit Multibyte-Kodierungen (UTF-8). \n
- ✅ Groß-/Kleinschreibung wird beachtet. Wenn Sie ohne Berücksichtigung der Groß-/Kleinschreibung prüfen möchten, verwenden Sie
str_starts_with(strtolower(...)). \n
Diese Methode ist der absolute Spitzenreiter, wenn Sie PHP 8.0 oder höher haben. Aber was tun, wenn Ihr Projekt noch auf PHP 7 läuft? Lesen Sie weiter.
\n\nMethode Nr. 2: substr – ein alter Freund ist besser als zwei neue
\n\nVor dem Erscheinen von str_starts_with verwendeten viele substr zum Vergleichen des Zeichenfolgenanfangs. Die Idee ist einfach: Schneiden Sie ein Stück der gewünschten Länge vom String ab und vergleichen Sie es mit der gesuchten Teilzeichenfolge.
<?php\n$string = "Hallo, Welt!";\n$prefix = "Hallo";\n\nif (substr($string, 0, strlen($prefix)) === $prefix) {\n echo "Der String beginnt mit 'Hallo'";\n} else {\n echo "Der String beginnt NICHT mit 'Hallo'";\n}\n?>\n\nVorteile:
\n- \n
- Funktioniert in jeder PHP-Version. \n
- Verständliche Logik. \n
Nachteile:
\n- \n
- Man muss an
strlen()denken – es ist leicht, einen Fehler mit der Länge zu machen. \n - Wenn der String kürzer als das Präfix ist, gibt
substreinen leeren String zurück, und der Vergleich schlägt fehl (bricht aber nicht ab). \n - Weniger lesbar als die moderne Alternative. \n
Trotzdem ist dies eine absolut funktionierende Option, die Sie nicht im Stich lässt. Hauptsache, Sie vergessen nicht, den strikten Vergleich === zu verwenden.
Methode Nr. 3: strpos – clever, aber gefährlich
\n\nEin weiterer klassischer Ansatz ist die Verwendung von strpos(). Die Funktion sucht das erste Vorkommen einer Teilzeichenfolge