W3docs

substr_replace()

Die Funktion substr_replace() in PHP ersetzt einen Teil eines Strings durch einen anderen String, basierend auf einer numerischen Position.

Einführung

Die Funktion substr_replace() ersetzt einen Teil eines Strings durch einen anderen String, basierend auf einer numerischen Position anstelle eines Suchmusters. Sie geben an, wo der Ersatz beginnt und wie viele Zeichen überschrieben werden sollen, und die Funktion fügt den Ersatzstring ein. Das macht sie ideal für Bearbeitungen an festen Positionen — das Maskieren der Ziffern einer Kreditkarte, das Austauschen eines Datumsabschnitts oder das Einfügen von Text an einem bekannten Offset.

Dies unterscheidet sich von str_replace(), die durch das Finden und Ersetzen einer Zeichenkette arbeitet. Verwenden Sie substr_replace(), wenn Sie die Position kennen; verwenden Sie str_replace(), wenn Sie den Wert kennen.

Syntax

substr_replace(
    array|string $string,
    array|string $replace,
    array|int $offset,
    array|int|null $length = null
): string|array
ParameterBeschreibung
$stringDer Eingabestring (oder ein Array von Strings — siehe Arbeiten mit Arrays).
$replaceDer Ersatzstring, der an der Stelle $offset eingefügt wird.
$offsetDie Position, an der der Ersatz beginnt. Ein negativer Wert zählt vom Ende des Strings.
$lengthWie viele Zeichen überschrieben werden. Weglassen (oder null übergeben), um bis zum Ende des Strings zu ersetzen. Ein negativer Wert stoppt so viele Zeichen vor dem Ende. 0 fügt ein, ohne etwas zu löschen.

Die Funktion gibt den resultierenden String zurück. Sie verändert $string nicht direkt — der Rückgabewert muss gespeichert werden.

Grundlegendes Beispiel

php— editable, runs on the server

Ab Index 7 (w) werden fünf Zeichen entfernt und "universe" an ihrer Stelle eingefügt.

Einfügen ohne Löschen

Übergeben Sie 0 als Länge, und nichts wird entfernt — der Ersatzstring wird einfach vor dem Offset eingefügt.

<?php

echo substr_replace("Hello", "ABC", 2, 0); // HeABCllo

Ersetzen ab einem negativen Offset

Ein negativer $offset zählt vom Ende des Strings zurück, was praktisch ist, wenn die Länge nicht im Voraus bekannt ist.

<?php

echo substr_replace("Hello", "X", -1);     // HellX  (replace the last character)
echo "\n";
echo substr_replace("12345", "X", 1, -1);  // 1X5    (replace from index 1 to 1-before-the-end)

Ein praktisches Beispiel: Ziffern maskieren

Das Überschreiben eines bekannten Abschnitts mit der gleichen Anzahl von *-Zeichen ist ein häufiger Anwendungsfall — zum Beispiel das Verbergen eines Teils einer Kartennummer.

<?php

$card = "4111111111111111";
echo substr_replace($card, "********", 4, 8); // 4111********1111

Arbeiten mit Arrays

Wenn Sie ein Array von Strings übergeben, wendet substr_replace() den Ersatz auf jedes Element an und gibt ein neues Array zurück. Sie können auch Arrays für $replace, $offset und $length übergeben, um unterschiedliche Werte pro Element zu verwenden.

<?php

$names = ["Alice", "Bob", "Carol"];
$result = substr_replace($names, "***", 1, 2);
print_r($result);
// Array
// (
//     [0] => A***ce
//     [1] => B***
//     [2] => C***ol
// )

Häufige Fallstricke

  • Die Funktion gibt einen neuen String zurück. substr_replace($s, ...) allein hat keine sichtbare Wirkung — das Ergebnis muss zugewiesen oder ausgegeben werden.
  • Offsets sind Byte-Positionen, keine Zeichenpositionen. Für Multibyte-(UTF-8-)Text gibt es kein mb_substr_replace; Offsets müssen sorgfältig berechnet werden, oder der String muss mit mb_substr() neu aufgebaut werden.
  • Ein Offset nach dem Ende des Strings hängt den Ersatzstring an, anstatt ihn zu überschreiben.

Verwandte Funktionen

  • str_replace() — Ersetzen durch Wertabgleich statt Position.
  • substr() — einen Teil eines Strings extrahieren.
  • strpos() — die Position ermitteln, die an substr_replace() übergeben wird.
  • str_pad() — einen String auf eine bestimmte Länge auffüllen.

Fazit

substr_replace() ist das positionsbasierte Gegenstück zu str_replace(). Sobald man versteht, dass Offset und Länge einen Abschnitt beschreiben — und dass eine Länge von 0 einfügt, während ein negativer Offset vom Ende zählt — wird sie zu einem präzisen Werkzeug zum Maskieren, Einsetzen und Bearbeiten von Strings an bekannten Positionen.

Übungen

Übung
Was gibt die Funktion substr_replace() in PHP zurück?
Was gibt die Funktion substr_replace() in PHP zurück?
Was this page helpful?