Funktion str_ireplace() - String nicht case-sensitive ersetzen

In PHP-Anwendungen können in Zeichenketten Teile enthalten sein, die man durch einen anderen Wert ersetzen möchte. Das können beispielsweise Strings betreffen, die fehlerhaft sind und aus der Anwendung heraus korrigiert werden sollen. Für das Suchen und Ersetzen in Zeichenketten kann man in PHP die Funktion str_ireplace() verwenden. Innerhalb der runden Klammern sind bis zu 4 Parameter möglich, die folgende Bedeutung haben.

  1. Der Teil-String in der Zeichenkette, der gesucht und ersetzt werden soll.
  2. Mit diesem Wert wird der gesuchte Teil-String ersetzt.
  3. Die zu bearbeitende Zeichenkette, auf die die Funktion angewendet werden soll.
  4. Eine Variable, in dem die Anzahl der Ersetzungen gespeichert wird (optional).

Beim folgenden Beispielcode wird das Wort Fehlerhaftes durch Richtiges ersetzt.

<?php

$str = 'Fehlerhaftes Wort';

// Ausgabe Richtiges Wort
echo str_ireplace('Fehlerhaftes', 'Richtiges', $str);

?>

Das Suchen und Ersetzen wird auf alle Vorkommen des gesuchten Teil-Strings angewendet, sodass keine Begrenzung möglich ist. Die Anzahl der Ersetzungen wird in der Variable gespeichert, die man als 4. Parameter angegeben hat.

<?php

$count = 0;
$str = 'Fehlerhaftes Wort Fehlerhaftes Wort Fehlerhaftes Wort';

// Ausgabe Richtiges Wort...
echo str_ireplace('Fehlerhaftes', 'Richtiges', $str, $count);

// Ausgabe 3
echo $count;

?>

Die zu ersetzenden Werte können auch als Array übergeben werden. Dadurch kann man mehrere Strings ersetzen.

<?php

$str = 'A B C D E F';
$suchen = array('A ', 'C ', 'E '); 

// Ausgabe B D F
echo str_ireplace($suchen, '', $str);

?>

Die Werte, die eingesetzt werden sollen, können ebenfalls über ein Array übergeben werden. In dem Fall gilt, dass der 1. Wert des Arrays den 1. Wert des Such-Arrays ersetzt, der 2. Wert den 2. Wert des Such-Arrays usw.

<?php

$str = 'A B C D E F';
$suchen = array('A ', 'C ', 'E ');
$ersetzen = array('B ', 'D ', 'F ');

// Ausgabe B B D D F F
echo str_ireplace($suchen, $ersetzen, $str);

?>

Hierbei kann es zu einer Verkettung von Ersetzungen kommen. Beim folgenden Beispiel wird A durch B ersetzt, B wird wiederum durch C ersetzt usw. Am Ende sind alle Zeichen durch G ersetzt worden.

<?php

$str = 'A B C D E F';
$suchen = array('A', 'B', 'C', 'D', 'E', 'F');
$ersetzen = array('B', 'C', 'D', 'E', 'F', 'G');

// Ausgabe G G G G G G
echo str_ireplace($suchen, $ersetzen, $str);

?>

Die zu bearbeitende Zeichenkette kann ebenfalls ein Array mit mehreren Werten sein.

<?php

$str = array('AB', 'CD', 'EF');
$suchen = array('A', 'C', 'E');
$ersetzen = array('B', 'D', 'F');

$ergebnis = str_ireplace($suchen, $ersetzen, $str);

// Array ausgeben

// Ausgabe untereinander BB, DD, FF
foreach ($ergebnis as $wert)
{
  echo $wert . '<br>';
}

?>

Anders als bei der ähnlichen Funktion str_replace() ist str_ireplace() nicht case-sensitive. Es wird somit zwischen Groß- und Kleinschreibung nicht unterschieden. Beim folgenden Code werden alle Such-Strings durch Z ersetzt, obwohl sie nicht in Großbuchstaben angegeben wurden. Mit str_replace() hätte die Funktion dagegen keinen Effekt.

<?php

$str = 'A B C D E F';
$suchen = array('a', 'b', 'c', 'd', 'e', 'f');

// Ausgabe Z Z Z Z Z Z
echo str_ireplace($suchen, 'Z', $str);

?>

Neben der unterschiedlichen Handhabung der Groß- und Kleinschreibung gibt es keine Unterschiede zu str_replace(). Mit der Funktion str_ireplace() kann das Suchen und Ersetzen auch mit Umlauten oder Sonderzeichen erfolgen. Bei Sonderzeichen stellt sich die Frage nach Groß- und Kleinschreibung nicht. Bei Umlauten gibt es allerdings zu beachten, dass kleingeschriebene Umlaute nicht als Kleinbuchstaben von großgeschriebenen Umlauten behandelt werden. Das kann dazu führen, dass die Funktion nicht die gewünschten Ergebnisse liefert. Eine Möglichkeit kann hierbei sein, die Umlaute mit der Funktion htmlentities() in Entitäten umzuwandeln, da dann die Zuordnung von Groß- und Kleinbuchstaben funktioniert.