Eine feine Sache - str_replace()
Sonntag, 14 Juni 2009
Um mal schnell irgendeinen Ausdruck in einem String gegen einen anderen Ausdruck zu tauschen, dafür kann man str_replace() verwenden. So richtig Spaß macht es aber erst, wenn man mit Arrays arbeitet. Und jede Menge Code spart das auch. Wenn es damals PHP gegeben hätte, wäre das Wunder sicherlich nicht so groß gewesen:
<?php
$alt= 'Wasser weckt die Lebensgeister';
$neu= str_replace("Wasser", "Wein", $alt);
echo $neu; // Ausgabe: Wein weckt die Lebensgeister
?>
Nun gut, das ist die einfache Verwendung. Gegeben sei eine Variable mit etwas Text und jeder Menge Satzzeichen darin, welche in Leerzeichen verwandelt werden sollen. Das wollen wir mit str_replace() erreichen. Unter Verwendung des oben genannten Beispiels könnte das Ergebnis so aussehen:
<?php
$meinSatz= 'Wasser, kalt getrunken, schmeckt super! Oder nicht? Nur "Masca"-Wein - schmeckt besser! Semikolon ; ';
$SatzOhneZeichen= str_replace(",", " ", $meinSatz);
$SatzOhneZeichen= str_replace("!", " ", $SatzOhneZeichen);
$SatzOhneZeichen= str_replace("?", " ", $SatzOhneZeichen);
$SatzOhneZeichen= str_replace("\"", " ", $SatzOhneZeichen);
$SatzOhneZeichen= str_replace("-", " ", $SatzOhneZeichen);
$SatzOhneZeichen= str_replace(";", " ", $SatzOhneZeichen);
echo $SatzOhneZeichen;
?>
Kommt schon was zusammen. Und genau das geht kürzer und zwar so:
<?php
$meinSatz= 'Wasser, kalt getrunken, schmeckt super! Oder nicht? Nur "Masca"-Wein - schmeckt besser! Semikolon ; ';
$Array_Zeichen= array(",", "!", "?", "\"", "-", ";");
$SatzOhneZeichen= str_replace($Array_Zeichen, " ", $meinSatz);
echo $SatzOhneZeichen;
?>
Alle Zeichen, die gegen das Leerzeichen ersetzt werden sollen, kommen in ein Array. Dieses Array wird als erter Parameter an die Funktion übergeben. Einfach und Platzsparend. Zum Abrunden des Lobpreisens der Funktion, nutzen wir nun gleich 2 Arrays.
<?php
$meinSatz= 'Jaja, die Musiker. Immer Sex, Drugs und Rock n Roll';
$array_musiker=array("Musiker", "Sex", "Drugs", "Rock n Roll");
$array_kinder=array("Kinder", "Stadt", "Land", "Fluß");
$neuerSatz= str_replace($array_musiker, $array_kinder, $meinSatz);
echo $neuerSatz;
// liefert Jaja, die Kinder. Immer Stadt, Land und Fluß
?>
Ab PHP 5.0 gibt es einen netten weiteren Parameter für str_replace(), eine Möglichkeit, anzugeben, wie oft ersetzt worden ist.
<?php
$meinSatz= 'Wasser, kalt getrunken, schmeckt super! Oder nicht? Nur "Masca"-Wein - schmeckt besser! Semikolon ; ';
$Array_Zeichen= array(",", "!", "?", "\"", "-", ";");
$SatzOhneZeichen= str_replace($Array_Zeichen, " ", $meinSatz, $zaehle_Ersetzungen);
echo $zaehle_Ersetzungen; // liefert 10
?>
Abschließend gibts noch eine, für die alltägliche Praxis nützliche, Funktion. Alle gängigen Zeilenumbrüche werden aus einem String entfernt:
<?php
function umbrueche_weg($strg)
{
$strg=trim($strg);
$arr=array('<br>','<br />','\r\n','\n','\r',chr(13));
$strg=str_replace($arr,"",$strg);
return $strg;
}
?>
This is a nested column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
This is another nested column
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.