W3docs

str_ireplace()

Erklärung der PHP-Funktion str_ireplace(), die Zeichenketten ohne Berücksichtigung der Groß-/Kleinschreibung ersetzt.

Die Funktion str_ireplace() in PHP ersetzt alle Vorkommen einer Suchzeichenkette durch eine Ersetzungszeichenkette und ignoriert dabei die Groß-/Kleinschreibung. Sie ist das Gegenstück ohne Berücksichtigung der Groß-/Kleinschreibung zu str_replace(): Alles funktioniert auf die gleiche Weise, außer dass die Suche nicht zwischen Groß- und Kleinbuchstaben unterscheidet. str_ireplace() ist die richtige Wahl, wenn die Schreibweise des Zieltextes unbekannt oder inkonsistent ist — zum Beispiel beim Bereinigen von Benutzereingaben oder beim Normalisieren von Tags, die als PHP, php oder Php erscheinen können.

Dieser Artikel behandelt die Syntax von str_ireplace(), das Verhalten der einzelnen Parameter, die Arbeit mit Arrays, das Zählen von Ersetzungen und mögliche Fallstricke.

Syntax

str_ireplace(
    array|string $search,
    array|string $replace,
    string|array $subject,
    int &$count = null
): string|array

Die Funktion nimmt drei erforderliche Parameter und einen optionalen entgegen:

  • $search — der Wert (oder Array von Werten), nach dem gesucht werden soll.
  • $replace — der Wert (oder Array von Werten), durch den ersetzt werden soll.
  • $subject — die Zeichenkette (oder Array von Zeichenketten), in der gesucht werden soll.
  • $count (optional) — eine per Referenz übergebene Variable, die mit der Gesamtanzahl der durchgeführten Ersetzungen befüllt wird.

Die Funktion gibt das modifizierte $subject zurück. Wenn $subject ein Array ist, wird ein Array zurückgegeben, bei dem die Ersetzung auf jedes Element angewendet wurde.

Einfaches Beispiel

php— editable, runs on the server

Obwohl wir nach "FOX" in Großbuchstaben suchen, ignoriert str_ireplace() die Schreibweise und findet das kleingeschriebene "fox" im Subjekt. Die Ausgabe lautet:

The quick brown cat jumps over the lazy dog

Mit dem standardmäßigen, schreibungsabhängigen str_replace() würde derselbe Aufruf keine Übereinstimmung finden und die Zeichenkette unverändert zurückgeben.

Arrays für Suche und Ersetzung verwenden

Wenn $search und $replace beide Arrays sind, wird jeder Suchwert mit der Ersetzung am gleichen Index kombiniert. So können mehrere Ersetzungen in einem einzigen Aufruf durchgeführt werden:

<?php
$search  = ["red", "GREEN", "Blue"];
$replace = ["crimson", "emerald", "navy"];
$subject = "Red, green and blue are colors.";

echo str_ireplace($search, $replace, $subject);
// crimson, emerald and navy are colors.
?>

Die Schreibweise der Einträge in $search spielt keine Rolle — "GREEN" findet trotzdem "green". Wenn $replace weniger Elemente als $search hat, werden die fehlenden Ersetzungen als leere Zeichenketten behandelt (die Übereinstimmungen werden entfernt).

Wenn $search ein Array, aber $replace eine einzelne Zeichenkette ist, ersetzt diese eine Zeichenkette jeden Suchwert:

<?php
echo str_ireplace(["cats", "dogs"], "pets", "I have CATS and Dogs.");
// I have pets and pets.
?>

Ersetzungen mit $count zählen

Übergeben Sie ein viertes Argument per Referenz, um zu erfahren, wie viele Ersetzungen vorgenommen wurden:

<?php
$text   = "PHP is great. php is fun. PhP rocks.";
$result = str_ireplace("php", "PHP", $text, $count);

echo $result . "\n";       // PHP is great. PHP is fun. PHP rocks.
echo "Replacements: $count"; // Replacements: 3
?>

Die drei Varianten PHP, php und PhP werden alle gefunden, sodass $count den Wert 3 hat. Dies ist praktisch zur Validierung — zum Beispiel um zu prüfen, ob ein verbotenes Wort überhaupt vorkam.

Zu beachtende Fallstricke

  • Die Ersetzung wird nicht erneut durchsucht. str_ireplace() verarbeitet Suchbegriffe von links nach rechts und scannt bereits eingefügten Text nie erneut, sodass keine Endlosschleife entstehen kann. Dennoch ist die Reihenfolge wichtig, wenn ein Suchbegriff ein Teilstring eines anderen ist.
  • Sie arbeitet mit Bytes, nicht mit Multibyte-Zeichen. Bei UTF-8-Text, bei dem die Schreibungsunempfindlichkeit akzentuierte oder nicht-lateinische Buchstaben berücksichtigen muss, verhält sich str_ireplace() möglicherweise nicht wie erwartet. Verwenden Sie stattdessen PHPs mb_*-Zeichenkettenfunktionen oder preg_replace() mit dem Modifikator i.
  • Verwenden Sie str_replace(), wenn die Schreibweise wichtig ist. Wenn Sie eine exakte, schreibungsabhängige Suche benötigen, greifen Sie auf str_replace() zurück — es ist etwas schneller, da es den Schreibungsanpassungsschritt überspringt.

Zusammenfassung

str_ireplace() führt eine schreibungsunabhängige Suche und Ersetzung in Zeichenketten durch. Verwenden Sie es für einfache, wörtliche Ersetzungen, bei denen die Schreibweise ignoriert werden soll; verwenden Sie str_replace(), wenn die Schreibweise wichtig ist, und preg_replace(), wenn Sie musterbasierte oder Multibyte-fähige Suche benötigen.

Übung

Übung
Was macht die Funktion str_ireplace() in PHP?
Was macht die Funktion str_ireplace() in PHP?
Was this page helpful?