Frage von CordiCraft, 87

Warum diese Ausgabe?

<?php
$smileys = array(
":D" => "happy",
":(" => "sad",
":/" => "meh",
":|" => "meh2",
"8)" => "cool",
"8D" => "nerd",
":O" => "oha",
"(happy)" => "happy",
"(sad)" => "sad",
"(meh)" => "meh",
"(meeh)" => "meh2",
"(cool)" => "cool",
"(nerd)" => "nerd",
"(oha)" => "oha"
);

foreach($smileys as $smilekey => $smiley) {
    $text = str_replace($smilekey, '<img src="img/smileys/'.$smiley.'.png">', $text);
}
?>

So lautet mein Skript. Aber wenn $text nun ":D" lautet, gibt mir die Website wenn ich ihr sage, sie solle $text ausgeben am Ende folgendes aus:

src="img/smileys/$smiley.png">

Hat jemand eine Idee warum?

Antwort
von TeeTier, 14

Neben der eigentlichen Beantwortung deiner Frage noch eine kleine Anmerkung: Hast du dir eigentlich mal überlegt, was bei folgenden Eingaben rauskommen würde?

  • Ein glücklicher Smiley:(happy)
  • Google => http://www.google.de/
  • Land:Deutschland, Stadt:Oldenburg
  • Ruf mich an! (Telefon: 12345678)

Du solltest also unbedingt prüfen, ob sowohl vor, als auch nach dem Smiley, ein Leerzeichen vorhanden ist, bzw. ob der zu ersetzende Text am Ende einer Zeile steht.

Ein blindes str_replace() wird garantiert viele Eingaben durcheinander bringen.

Wie gesagt, das war nur eine Anmerkung! :)

Schönen Tag noch! :)

Kommentar von CordiCraft ,

Das war zwar Durchaus ein sinnvoller Einwand, beantwortet jedoch meine Frage nicht =). Du schriebst "Neben der eigentlichen Beantwortung deiner Frage.". Aber meine Frage ist nirgens beantwortet???

Antwort
von Babelfish, 25

Die Ausgabe kommt nicht von dem Script, das du gepostet hast. Hast du evtl. vergessen, es auf den Server hochzuladen und dort läuft noch eine frühere Version?

Kommentar von CordiCraft ,

Wenn ich die Datei vom Server aufrufe kommt genau dieses skript, also denke ich, es ist schon so richtig ^^

Kommentar von Babelfish ,

Mal den Browsercache geleert? Oder schreib mal ein echo "test"; ins Script um zu sehen, ob deine Änderungen auch übernommen wurden.

Kommentar von CordiCraft ,

Hab ich gemacht, hat funktioniert. "test" wurde ausgegeben, Smiley Ausgabe aber immernoch fehlerhaft.

Kommentar von Babelfish ,

Das kann ich dann auch nicht erklären. Dein Code, den du hier gekostet hast, funktioniert und kann so was nicht ausgeben.

Das hier wäre eine falsche Variante, die deine Ausgabe erklären würde:

$text = str_replace($smilekey, '<img src="img/smileys/$smiley.png">', $text);

Aber wenn du sagst, dann es bei dir nicht so drin steht, kann ich dir leider auch nicht weiterhelfen.

Antwort
von Dory1, 33

Also bei mir funktioniert dein Skript wie erwartet. Den foreach-loop brauchst du aber gar nicht so wie ich das sehe:

$text = ":D";

echo '<img src="img/smileys/'.$smileys[$text].'.png">';

Ausgabe:

<img src="img/smileys/happy.png">
Kommentar von CordiCraft ,

Doch brauche ich, da der text wenn das Skript in Aktion tritt der Inhalt der $text nicht nur der Smiley ist und nur die Smileys ersetzt werden sollen.

Antwort
von Harvix, 52

Lass mal die Punkte vor dem $ Zeichen und hinter dem y weg.

Kommentar von CordiCraft ,

Dann ist das Skript ganz kaputt.

Kommentar von Harvix ,

Hm also bei mir funktioniert dein Skript, wohlgemerkt mit den Punkten. Welche Version von PHP verwendest du denn?

Kommentar von CordiCraft ,

5.6.22

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten