Author: KlammerAffe, zuletzt bearbeitet von progman @ 2004/11/02 19:57:09
Bitte beachten Sie, dass die Tutorialkapitel zusammenhängen. Wenn sie direkt auf ein Kapitel verlinkt wurden müssen Sie gegebenenfalls die vorherigen Kapitel auch lesen. Achten Sie beim lesen darauf, dass Sie kein Kapitel überspringen.
Gästebuch + Smilies
1. Das Script an sich
Da wir nun wissen wie wir ein Gästebuch erstellen, kommt jetzt noch ein kleiner Zustatz, denn wer wollte nicht schon immer Smilies in seinem Gästebuch haben?
In PHP gibt es die Möglichkeit eine Zeichenkette in einen Text zu suchen und dann diesen durch eine andere Zeichenkette zu ersetzen. Das Ganze machen wir mit der Funktion str_replace.
Der Befehl für str_replace sieht so aus:
string str_replace(string search, string replace, string text)
Das Script ist eigentlich ganz einfach. Erst der Funktionsaufruf str_replace. In den Klammern geben wir nun die 3 Sachen an:
Parameter | Beschreibung |
search | Gibt an, welche Zeichenkette zu suchen ist. |
replace | Gibt an, durch was die zu suchende Zeichenkette ersetzt werden soll. |
text | Gibt den String an, in dem die Zeichenkette gesucht und ersetzt werden soll. Der Parameter kann ein String oder eine Variable sein. |
Achtung!
str_replace kann nur exakt das suchen was in search angegeben wurde, also foo ist nicht das selbe wie FOO.
2. Ausgabe
Als erstes definieren wir die Variable $text. Um nun das Ergebnis auszugeben gibt es 2 Möglichkeiten.
-
<?php
$text = "Hallo, wie geht es euch? Ich mache oft Feler.";
echo str_replace("Feler", "Fehler", $text);
?> -
<?php
$text = "Hallo, wie geht es euch? Ich mache oft Feler.";
$text = str_replace("Feler", "Fehler", $text);
echo $text;
?>
Bei beiden Möglichkeiten sieht die Ausgabe folgender Masen aus:
Hallo, wie geht es euch? Ich mache oft Fehler.
Wie ihr nun seht, wurde aus Feler der String Fehler. Warum? Weil wir beim search-Parameter den String Feler und beim replace-Parameter den String Fehler angegeben haben. Da wir beim text-Parameter die Variable $text angegeben haben, sucht das Script in der Variable nach dem Wort "Feler" und ersetzt diese dann durch "Fehler".
3. Verwendung von Arrays in unserem Script
So um nun das ganze ein wenig saubere zu programmieren, bauen wir im unserem Script einfach mal Arrays ein. Das trifft sich gut, da str_replace auch Arrays als Parameter nutzen kann.
<?php
$text = "foo - bar";
$search = array('foo', 'bar');
$replace = array('foo1', 'bar1');
$text = str_replace($search, $replace, $text);
echo $text;
?>
Ausgabe:
foo1 - bar1
Weiteres zu str_replace kann man im PHP-Manual nachlesen.
4. Einbinden in unser Gästebuch
So sieht das Beispiel, für das Ausgeben in Eigenes Gästebuch, aus
<?php
echo "<h2>Gästebuch</h2>\n";
echo "<p>\n";
echo " <a href=\"index.php?section=gb_add\">Ins Gästebuch reinschreiben</a>\n";
echo "</p>\n";
$sql = "SELECT
Name,
Datum,
Email,
Homepage,
Inhalt
FROM
gaestebuch
ORDER BY
Datum DESC";
$result = mysql_query($sql) OR die(mysql_error());
echo "<p>Einträge im Gästebuch: ".mysql_num_rows($result)."</p>\n";
echo "<hr>\n";
// Beginn der Arrays
$search = array(':cool:',
':super:');
$replace = array('<img src="cool.gif" alt=":cool:" />',
'<img src="super.gif" alt=":super:" />');
// Ende der Arrays
while($row = mysql_fetch_assoc($result)) {
$text = str_replace($search, $replace, $row['Inhalt']); // text replacen
echo "<div class=\"gb-eintrag\">\n";
echo " <div class=\"Kopfdaten\">\n";
if(trim($row['Email']) == "") {
echo $row['Name'];
} else {
echo "<a href=\"mailto:".$row['Email']."\">".$row['Name']."</a>\n";
}
if(trim($row['Homepage']) != "") {
if(substr($row['Homepage'], 0, 7) == "http://") {
// Wenn der Teilstring gleich "http://" ist, so
// soll er den Link ohne "http://" erzeugen, denn
// der Steht ja schon drin
echo " (<a href=\"".$row['Homepage']."\">Homepage</a>)";
} else {
// Wenn nicht, so soll er das "http://" manuell hinzufügen
echo " (<a href=\"http://".$row['Homepage']."\">Homepage</a>)";
}
}
echo " schrieb um ".$row['Datum']."\n";
echo " </div>\n";
echo " <div class=\"Inhalt\">\n";
echo " ".nl2br($text)."\n"; // <-- Variable bearbeiten
echo " </div>\n";
echo "</div>\n";
}
?>
Fragen zum aktuellen Thema
- Kann kann ich mit der Funtion str_replace Zeichenketten suchen, egal ob groß oder klein geschrieben?
- Kann kann ich mit der Funtion str_replace Zeichenketten suchen, egal ob groß oder klein geschrieben?
-
Nein, nicht ohne weiteres. Wir können aber str_replace mit strtolower benutzen, oder aber auch Reguläre Ausdrücke verwenden. Diese werden später im Tutorial durchgenommen.