Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
 
 
 

PHP strstr() - Zeichenketten effektiv durchsuchen

Sie befinden sich: Home > Php Tutorial > Das erste Vorkommen eines...

Das erste Vorkommen eines Zeichen in einer Zeichenkette suchen und den Rest zurückgeben


Eintrag am:  18.11.2009
Hits / Besucher:  6215
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Die Funktion strstr() hilft dir, gezielt Teile von Zeichenketten (Strings) zu finden und auszulesen. Gerade beim Umgang mit Daten wie E-Mails, Protokollen oder strukturierten Texten begegnet dir diese Funktion in der Praxis immer wieder.

Modernes Titelbild zur PHP-Funktion strstr() mit PHP-Logo und hervorgehobenem Textbalken.

1. Einleitung: Was ist PHP strstr()?

Mit strstr() kannst du nach einem bestimmten Teilstring in einer Zeichenkette suchen. Wird der Suchbegriff gefunden, erhältst du den Rest der Zeichenkette ab dem Suchbegriff – oder auf Wunsch sogar den Teil davor.

Warum ist das praktisch? Viele Aufgaben in PHP verlangen, dass du z.B. Benutzernamen aus E-Mail-Adressen extrahierst oder Inhalte nach bestimmten Trennzeichen aufteilst. Mit strstr() gelingt das elegant und ohne komplizierte Schleifen.

2. Grundlagen von strstr()

Um die Function strstr() korrekt einzusetzen, solltest du die Parameter und das Verhalten der Funktion genau kennen.

Die Syntax von strstr() sieht wie folgt aus:

string|false strstr(string $sHeuhaufen, string $sNadel, bool $bVorNadel = false) 
  • $sHeuhaufen: Die zu durchsuchende Zeichenkette (dein gesamter Text).
  • $sNadel: Der zu suchende Teilstring.
  • $bVorNadel (optional): Wenn true, gibt strstr() alles vor dem ersten Vorkommen von $sNadel zurück. Standard ist false.

Der Rückgabewert ist entweder ein String (bei Erfolg) oder false (wenn der Suchbegriff nicht gefunden wird).

Beachte, dass strstr() zwischen Groß- und Kleinschreibung unterscheidet. Außerdem arbeitet die Funktion binärsicher, was bedeutet, dass sie beliebige Daten (auch Binärdaten) korrekt verarbeiten kann.

3. strstr() in der Praxis: Ausführliche Beispiele

Am besten verstehst du den Nutzen von strstr(), wenn du dir typische Anwendungsfälle ansiehst.

Beispiel 1: Den Rest der Zeichenkette ab einem Substring finden

Du willst alles ab dem @-Zeichen aus einer E-Mail-Adresse herauslösen:

$sEmail = "user@example.com"; 

$sRest = strstr($sEmail, "@");

/** $sRest enthält jetzt: "@example.com" */

Beispiel 2: Den Teil vor dem Suchbegriff auslesen

Wenn du nur den Namen vor dem @ brauchst, kannst du den dritten Parameter nutzen:

$sEmail = "user@example.com"; 

$sName = strstr($sEmail, "@", true);

/** $sName enthält jetzt: "user" */

Beispiel 3: Trennen an beliebigen Zeichen

Du hast eine Liste mit Daten und willst den Teil vor einem Doppelpunkt:

$sDaten = "status:ok";


$sStatus = strstr($sDaten, ":", true);

/** $sStatus enthält jetzt: "status" */

Beispiel 4: Suche mit ASCII-Werten

Manchmal willst du nach bestimmten Sonderzeichen suchen – z.B. nach einem Komma:

$sText = "Wert1,Wert2";


$sErsterTeil = strstr($sText, ",", true);

/** $sErsterTeil enthält: "Wert1" */

Du kannst sogar nach einem Zeichen mit seinem ASCII-Code suchen (in alten PHP-Versionen). Ab PHP 8.0 ist das aber veraltet:

// Nicht mehr empfohlen, aber so ging es früher: 

// $sErsterTeil = strstr($sText, 44, true);

// 44 ist ASCII für ","

Was passiert, wenn der Suchbegriff nicht gefunden wird?

Wenn strstr() den Teilstring nicht findet, gibt sie false zurück. Dies solltest du immer sorgfältig abprüfen:

$sText = "Apfel";


$sErgebnis = strstr($sText, "@");

if ($sErgebnis === false) {

/** Teilstring nicht gefunden – die Funktion gibt false zurück, wenn die needle nicht im haystack gefunden wird. */

}

Das strikte === ist wichtig, weil auch leere Strings (z.B. wenn vor dem Suchbegriff nichts steht) ansonsten als false gewertet werden können.

4. strstr() vs. Ähnliche Funktionen: Wann welche verwenden?

PHP bietet verschiedene Funktionen, um mit Teilstrings zu arbeiten. Je nach Situation gibt es Alternativen, die besser oder schneller sind.

strstr() vs. stristr()

Der Unterschied liegt in der Groß-/Kleinschreibung. stristr() ignoriert Groß-/Kleinschreibung, strstr() dagegen nicht:

$sText = "Hallo Welt";


$sTeil = strstr($sText, "welt");

// gibt false zurück

$sTeilCI = stristr($sText, "welt");

// gibt "Welt" zurück

strstr() vs. strpos() / str_contains() (ab PHP 8.0)

  • strpos() gibt dir die Position des Substrings zurück, nicht den Text selbst.
  • str_contains() gibt einen booleschen Wert zurück, ob der Substring existiert.

Wenn du nur prüfen willst, ob ein Teilstring vorkommt, ist strpos() (bzw. ab PHP 8.0 besser: str_contains()) schneller:

$sText = "Beispieltext"; 

$bVorhanden = strpos($sText, "Beispiel") !== false;

$bVorhandenNeu = str_contains($sText, "Beispiel");

// ab PHP 8.0

strstr() vs. substr()

Wenn du genau weißt, wo dein Teilstring anfängt, kannst du mit substr() gezielt Teile herausschneiden. strstr() ist bequemer, wenn du nicht vorher die Position bestimmen willst.

strstr() vs. strrchr()

Mit strrchr() findest du das letzte Vorkommen eines Teilstrings und alles danach:

$sText = "user@mail@domain.com";


$sLetzterRest = strrchr($sText, "@");

/** $sLetzterRest enthält: "@domain.com" */

Vergleichstabelle: Wann welche Funktion?

Funktion Groß-/Kleinschreibung Rückgabe Wann einsetzen?
strstr() Ja Teilstring ab Fund Rest ab erstem Vorkommen extrahieren
stristr() Nein Teilstring ab Fund Wie strstr(), aber ohne Case-Sensitiv.
strpos() Ja Integer (Position) Nur prüfen oder gezielt zuschneiden
str_contains() Ja Boolean Ab PHP 8.0, reine Existenzprüfung
strrchr() Ja Ab letztem Fund Nach letztem Vorkommen aufteilen
substr() n/a Beliebig Feste Positionen ausschneiden

5. Häufige Fehler und Best Practices

Bestimmte Fehler tauchen bei strstr() immer wieder auf. Wer sie kennt, spart sich Debugging-Zeit.

Fehler 1: Unsichere if-Abfragen

Viele schreiben:

if (strstr($sText, "@")) { ... } 

Das kann schiefgehen, wenn der Rückgabewert z.B. “0” oder ein leerer String ist. Besser:

$sErgebnis = strstr($sText, "@");

if ($sErgebnis !== false) {

/** Substring wurde gefunden */

}

Fehler 2: Leerer Suchbegriff

Seit PHP 8.0 gibt ein leerer $sNadel-Parameter immer den vollen String zurück. Vorher war das Verhalten unterschiedlich – deshalb solltest du das vermeiden.

Performance:

strstr() durchsucht immer die gesamte Zeichenkette bis zum Fund. Wenn du nur wissen willst, ob etwas vorkommt, nimm strpos() oder ab PHP 8.0 str_contains(), um das erste Vorkommen der needle zu finden. Das geht schneller und braucht weniger Speicher.

Typische Anwendungsfälle:

  • Domain aus E-Mail extrahieren:

    $sEmail = "name@domain.de";
    

    $sDomain = strstr($sEmail, "@");

    /** $sDomain: "@domain.de" */
  • Protokolldateien parsen:
    Trenne alles ab einem Doppelpunkt, Semikolon oder Komma, um z.B. Felder zu isolieren.

  • Keywords prüfen:
    Prüfe, ob ein Log-String einen Fehlercode enthält, bevor du weitere Aktionen startest.

6. Versionshinweise und Deprecation

Achte immer auf die PHP-Version, wenn du strstr() verwendest. Manche Features stehen nicht überall zur Verfügung.

  • Seit PHP 5.3 gibt es den Parameter $bVorNadel.
  • Ab PHP 7.3.0 ist die Übergabe von Integer-Werten als $sNadel veraltet und ab PHP 8.0 entfernt. Verwende immer einen String als Suchbegriff!
  • Seit PHP 8.0 solltest du für reine Existenzprüfungen besser str_contains() verwenden.

7. Fazit

strstr() bleibt eine vielseitige, einfach zu verwendende Funktion für das Arbeiten mit Zeichenketten. Setze sie gezielt ein, wenn du ab einem bestimmten Zeichen alles brauchst – oder mit dem dritten Parameter auch davor, um eine Funktion zu nutzen, die unabhängig von Groß- und Kleinschreibung ist.

Für einfache Prüfungen auf Vorhandensein eines Substrings solltest du ab PHP 8.0 lieber str_contains() verwenden. Bei größeren Projekten lohnt sich ein prüfender Blick auf Performance und Klarheit, bevor du dich für strstr() entscheidest.

 

Tags:

 

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.