burghi'sphp-dummies.de
PHP für Einsteiger und Fortgeschrittenere - an laufenden Scripten erklärt
06.02.2012, 11:11 Uhr - Impressum

Tutorials - Erste Schritte - Strings - str replace

Tutorials - Erste Schritte
Strings: str replace
str_replace() tut, wie der name schon sagt, was replacen, ersetzen.

Wie geht dhem ?

Im folgenden Beispiel wird im Götterfunken die Zeichenkette "Freude" durch "Trauer" ersetzt und ausgegeben:
<?php
$text = "Freude schöner Götterfunken,
Tochter aus Elysium,
Wir betreten Feuertrunken,
Himmlische, dein Heiligtum!
Deine Zauber binden wieder,
Was die Mode streng geteilt.
Alle Menschen werden Brüder,
Wo dein sanfter Flügel weilt.
";

echo str_replace("Freude", "Trauer", $text);
?>
str_replace() ist Case-Sensitiv, d.h. wenn irgendwo "freude" stehen würde, würde er es leider nicht erkennen :-/
Ab PHP 5 ist die Funktion str_ireplace() eingebaut, der dann Groß / Klein-Schreibung egal ist.

str_replace() ersetzt nicht nur einmal, das war eben nur Zufall (da "Freude" nur 1x vorkam) sondern alle Fundstellen im Text:
<?php
$kinderlied = "Drei Chinesen mit dem Kontrabaß saßen auf der Straße und erzählten sich was.<br />
Da kam die Polizei: \"Ja was ist denn das?\"<br />
Drei Chinesen mit dem Kontrabaß
";

echo $kinderlied;
echo "<br />\n<br />\n<font color=red>";

$a = $kinderlied;
$a = str_replace("e", "a", $a);
$a = str_replace("i", "a", $a);
$a = str_replace("o", "a", $a);
$a = str_replace("u", "a", $a);

echo $a;
?>
Jetzt muss ich leider etwas vorgreifen auf das Thema "Arrays"...
Denn die Parameter in str_replace() können seit PHP 4.0.5 alle Arrays sein.
Das ist vor allem praktisch, wenn man mehrere Suchbegriffe (wie eben im Beispiel) hat:
<?php
$kinderlied = "Drei Chinesen mit dem Kontrabaß saßen auf der Straße und erzählten sich was.<br />
Da kam die Polizei: \"Ja was ist denn das?\"<br />
Drei Chinesen mit dem Kontrabaß
";

echo $kinderlied;
echo "<br />\n<br />\n<font color=red>";

$zeichen = array("a", "e", "i", "o", "u",
          "A", "E", "I", "O", "U");

echo str_replace($zeichen, "a", $kinderlied);     /* alle in $zeichen enthaltene Zeichen werden ersetzt durch "a""; */

echo "</font><br />\n<br />\n<font color=blue>";


     /* oder in PHP5: */
$zeichen = array("a", "e", "i", "o", "u");

echo str_ireplace($zeichen, "u", $kinderlied);     /* durch das "i" in str_ireplace würde auch z.B. große E durch "u" ersetzt"; */

echo "</font>";
?>
Oder man hat ein Array, in dem alle Einträge bearbeitet werden sollen:
<?php
$kinderlied[0] = "Drei Chinesen mit dem Kontrabaß saßen auf der Straße und erzählten sich was.<br />\n
Da kam die Polizei: \"Ja was ist denn das?\"<br />\n
Drei Chinesen mit dem Kontrabaß
";

$kinderlied[1] = "Fuchs du hast die Gans gestohlen...";

$kinderlied = str_replace("die", "<b>die</b>", $kinderlied);
     
echo $kinderlied[0] . "<br />\n<br />\n" .
     $kinderlied[1];
?>
© 2004-2005 - Impressum