quakenet:#php Tutorial

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
  2. Ausgabe
  3. Verwendung von Arrays in unserem Script
  4. Einbinden in unser Gästebuch

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:

Tab.:Parameterbeschreibung von str_replace
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.

  1. <?php
        $text
    = "Hallo, wie geht es euch? Ich mache oft Feler.";
        echo
    str_replace("Feler", "Fehler", $text);
    ?>
  2. <?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

  1. 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.

Nach oben