PHP str_replace: Zeichenketten in PHP manipulieren

    Logo der Programmiersprache PHP
    Avatarbild von Patrick
    Patrick

    veröffentlicht am: 06.05.2020
    zuletzt aktualisiert am: 07.02.2023

    PHP str_replace: Zeichen innerhalb eines Strings ersetzen!

    Oft arbeiten wir mit Zeichenketten, die mit Platzhaltern versehen sind oder Zeichen, die ersetzt werden müssen. Für diesen Anwendungsfall stellt uns PHP viele Funktionen zur Verfügung. Die Funktion, die ich hier vorstellen möchte, ist str_replace.

    Einfaches ersetzen mit der PHP str_replace Funktion

    Die Funktion str_replace akzeptiert 4 Parameter, von diesen ist einer optional.

    str_replace ($needle, $replace, $haystack, &$count)
        $needle (erforderlich)
            Der gesuchte Wert
        $replace (erforderlich)
            Der Wert, der gefundene Werte ersetzt.
        $haystack (erforderlich)
            Die zu durchsuchende Zeichenkette.
        &$count (optional)
            Anzahl der durchgeführten Ersetzungen.

    Du kannst für $needle, $replace und $haystack auch Arrays statt Strings übergeben.
    Wie sich str_replace dann verhält, erkläre ich genauer im zweiten Teil des Artikels.

    Der Parameter $count wird per Referenz übergeben.
    Das heißt, dass der Wert von $count von der Funktion verändert werden kann.
    Bedingung dafür ist, dass bei der Funktionsdefinition ein & vor dem Variablennamen angegeben wird.

    Um nun einfach einen Teilstring in einem String zu ersetzen, kannst du str_replace so nutzen:

    echo str_replace("world", "CodeCitrus", "Hello world!");
    // Hello CodeCitrus!

    Mit dem Parameter $count sieht das ganze nun so aus:

    $i = 0;
    echo str_replace("A", "B", "A B A C D", $i);
    // B B B C D
    echo $i;
    // 2
    echo str_replace("A", "B", "A B", $i);
    // B B
    echo $i;
    // 1

    PHP str_replace mit Arrays

    Wenn du für die Parameter Arrays statt Strings angibst, werden mehrere Ersetzungen nacheinander durchgeführt.

    $string = '1 2 3 4';
    $suche = array('1', '2', '3', '4');
    $ersetze = array('2', '3', '4', '5');
    echo str_replace($suche, $ersetze, $string);
    // 5 5 5 5

    Das gleiche Ergebnis würdest du auch erhalten, wenn du die Ersetzungen einfach nacheinander durchführen würdest.

    $string = '1 2 3 4';
    $string = str_replace('1', '2', $string);
    echo $string;
    // 2 2 3 4
    $string = str_replace('2', '3', $string);
    echo $string;
    // 3 3 3 4
    $string = str_replace('3', '4', $string);
    echo $string;
    // 4 4 4 4
    $string = str_replace('4', '5', $string);
    echo $string;
    // 5 5 5 5

    Allerdings ist Vorsicht geboten, wenn das Array zur Ersetzung länger ist als das mit den Suchstrings.

    $string = '1 2 3 4';
    $suche = array('1', '2', '3', '4');
    $ersetze = array('2', '3', '4');
    echo str_replace($suche, $ersetze, $string);
    //

    Hier ist das Ergebnis ein leerer String, da, wenn zu einem Suchstring keine Ersetzung vorhanden ist, einfach ein leerer String genommen wird.
    Das Ergebnis in diesem Fall ist nur komplett leer, da bei der letzten Ersetzung der String “4 4 4 4” enthalten würde.
    Die letzte Ersetzung ersetzt jede einzelne 4 durch “”.

    $string = '1 2 3 4';
    $suche = array('1', '2');
    $ersetze = array('2');
    echo str_replace($suche, $ersetze, $string);
    // 3 4

    Wenn hingegen mehr Werte zur Ersetzung angegeben werden als Werte zur Suche, werden die überschüssigen Ersetzungswerte einfach nicht verwendet.

    $string = '1 2 3 4';
    $suche = array('1', '2');
    $ersetze = array('2', '3', '4', '5');
    echo str_replace($suche, $ersetze, $string);
    // 3 3 3 4

    Falls du statt in einem String in einem Array ersetzt, ist auch der Rückgabewert ein Array. Jeder Wert des Arrays wird auch hier einzeln ersetzt.

    $array = array('1', '2', '3', '4');
    $suche = array('1', '2', '3', '4');
    $ersetze = array('2', '3', '4', '5');
    print_r(str_replace($suche, $ersetze, $array));
    // Array ( [0] => 5 [1] => 5 [2] => 5 [3] => 5 )

    Weitere Ersetzungsmethoden

    str_replace beachtet die Groß- und Kleinschreibung (=ist case sensitive). str_ireplace hingegen nicht, und kann daher genauso verwendet werden, wenn Groß- und Kleinschreibung ignoriert werden soll.

    $suche = array('a', 'b', 'c');
    $string = 'A B C';
    echo str_replace($suche, '', $string);
    // A B C
    echo str_ireplace($suche, '', $string);
    //

    Mit der Funktion substr_replace kannst du den zu ersetzenden String mit der Index-Position angeben.

    $string = "Hello world!";
    $ersetze = 'CodeCitrus';
    $start = 6;
    echo substr_replace($string, $ersetze, $start);
    // Hello CodeCitrus
    $zu_ersetzende_laenge = 3;
    echo substr_replace($string, $ersetze, $start, $zu_ersetzende_laenge);
    // Hello CodeCitrusld!

    Fazit

    Einen Teilstring in einem String mit einem anderen String zu ersetzen ist einfach.
    Die Möglichkeit str_replace mit Arrays aufzurufen, macht die Funktion noch flexibler.
    Dies kann auch schnell zu sehr unübersichtlichem Code führen, ist daher mit Vorsicht zu genießen.
    Um Groß- und Kleinschreibung zu ignorieren, kannst du str_ireplace verwenden.
    Um statt einen zu ersetzenden Teilstring anzugeben, kannst du mit substr_replace einen Index angeben.

    Wenn du noch Anmerkungen, Kritik oder Lob hast, schreib bitte einen Kommentar!

    😩 Gelangweilt von den Udemy & YouTube-Tutorials?!

    Lerne spielerisch Python, Java & SQL und komme deiner gutbezahlten (und an der 🌴 liegenden) Traumkarriere einen Schritt weiter.

    TP Star TP Star TP Star TP Star TP Star

    "Für Leute die gerne Python oder Java lernen wollen ist Codegree klasse. Ist nicht wie bei anderen Konkurrenten auf Videokursen aufgebaut..."

    - Lennart Sparbier

    100% kostenlos registrieren · keine Kreditkarte notwendig

    👋 Wir warten bereits auf dich!

    Lerne das, was du wirklich brauchst.

    Im Gegensatz zu der Abendschule oder der alteingesessenen Uni lernst du bei codegree die Sprachen & Pakete, die wirklich im Jobmarkt gesucht werden.

    Logo von Python
    Logo von PyTorch
    Logo von Pandas
    Logo von Matplotlib
    Logo von Java
    Logo von NumPy
    Mehr erfahren

    100% kostenlos registrieren · keine Zahlungsdaten notwendig