Suchen & Ersetzen
Mit PHP kann man Texte auch durchsuchen lassen, und bestimmte Zeichen/Wörter durch einen anderen Text ersetzten lassen.
Der einfachste Befehl dafür lautet: str_replace(„Suchen“, „Ersetzen“, $variable).
Ein Beispiel:
<?php $text ="Dies ist ein kleines Beispiel"; $text = str_replace("ist","war", $text); echo $text;?>
Mit str_replace ersetzen wir ist durch war in der Variable$text und speichern dies wieder in der Variable $text.
Wichtig zu wissen ist, dass str_replace zwischen Groß- und Kleinschreibung unterscheidet. Manchmal möchte man aber ein Wort ersetzen lassen, egal ob es groß- bzw. klein geschrieben wurde.
Dafür gibt es den Befehl eregi_replace.
Dieser Befehl baut sich genauso auf, wie str_replace.
Ein Beispiel:
<?php $text ="Dies IsT ein kleines Beispiel"; $text = eregi_replace("ist","war", $text); echo $text;?>
Hier wird IsT durch war ersetzt. Mit str_replace würde da immer noch IsT stehen.
Aber was ist wenn man eregi_replace Sonderzeichen (z.B. eckige Klammer) ersetzen möchte?
Ein Beispiel:
<?php $text ="Dies [Ist] ein kleines Beispiel"; $text = eregi_replace("[ist]","war", $text); echo $text;?>
Als Ausgabe erhalten wir einen komischen, nicht lesbaren Satz, weil eckigen Klammer in eregi_replace eine bestimmte Funktion hat.
Dafür müssen wir die Klammer wieder mit Backslash maskieren.
<?php $text ="Dies [Ist] ein kleines Beispiel"; $text = eregi_replace("[ist]","war", $text); echo $text;?>
Jetzt erhalten wir den richtigen Satz.
n zu <br>
PHP wandelt alle Zeilenumbrüche von einem Text, z.B. aus einem Formular, in n um. Wenn man diesen Text später wieder ausgibt, erhalten wir keine Zeilenumbrüche, weil HTML <br> dafür verwendet.
Deswegen müssen wir mit PHP alle n durch <br>ersetzen.
Dies können wir mir str_replace machen.
<?php $text ="Dies Ist ein kleines Beispiel"; echo $text;//Vor dem ersetzen echo "<br>"; $text = str_replace("n","<br>", $text); echo $text;//Nach dem ersetzen?>
Den selben Effekt würde auch dieses Beispiel erzielen:
<?php $text ="Dies Ist ein n kleines Beispiel"; echo $text;//Vor dem ersetzen echo "<br>"; $text = str_replace("n","<br>", $text); echo $text;//Nach dem ersetzen?>
Man kann auch nl2br($variable) benutzen, dabei werden alle n in <br /> umgewandelt.
<?php $text ="Dies Ist ein kleines Beispiel"; $text = nl2br($text); echo $text;?>
Das <br /> ist auch für XHTML kompatibel.
Anführungszeichen
Wenn man in seinem Text Anführungszeichen benutzt, und diesen Text mit PHP dann in einer Datei speichert, werden automatisch alle Anführungszeichen mit einem Backslash () versehen.
Wenn man diesen Text später aus der Datei ausliest, stellt man fest, das dort immer noch die Backslash sind. Deswegen kann man alle „ durch „ ersetzen.
Dies geht mit dem PHP-Befehl: $variable = stripslashes($variable);
Ein Beispiel:
Erstellen Sie die Datei test.txt und schreiben Sie in diese Datei einen Text, in dem ein paar „ vorkommen.
Warum macht man dies?
Ganz einfach, weil PHP Anführungszeichen maskiert, also wird aus „ ein „.
Jetzt rufen wir mittels PHP die Datei auf.
<?php $lesen = implode("",file("test.txt")); echo $lesen; echo "<br>"; $lesen = stripslashes($lesen); echo $lesen;?>
Sonderzeichen und HTML-Tags
Wenn man den Besucher etwas in ein Formular eingeben lässt (z.B. bei Gästebüchern), so kann er auch z.B. HTML-Befehle dort eingeben. Wenn man diesen Text dann ausgibt, so werden die HTML-Befehle ausgeführt. Dies ist besonders schlimm, wenn er den Befehl für eine automatische Weiterleitung eingibt, denn immer wenn man diesen Text aufruft, wird man auf eine andere Seite weitergeleitet.
Deswegen können wir alle Sonderzeichen und HTML-Tags in den dafür vorgesehenen HTML-Code umwandeln.
Dies bedeutet das aus < ein < wird, aus ö wird Ö.
Dafür gibt es den Befehl htmlentities($variable);.
Ein Beispiel:
<?php $text ="<a href="index.php">Index</a>"; $text = htmlentities($text); echo $text;?>
Als Ausgabe erhalten wir <a href=“index.php“>Index</a>
Natürlich sind wir nicht gezwungen einen Text zu überschreiben, wenn wir etwas ersetzten möchten, wir können für den neuen Text auch andere Variablen benutzen, aber meisten möchten man ja den ersetzten Text ausgeben, und so benutzen wir weniger Variablen Namen.
Außerdem sollten wir einen Text erst dann ersetzen lassen, wenn wir ihn ausgeben und nicht wenn wir ihn speichern.