str_replace
Sp33dy G0nz4l3s
- php
0 jörg
Hi, ich möchte in meinem Kommentarscript :) Smilies mit einem Bild ersetzen. Habe es so versucht:
echo "<div id="comment_text">" . $kommentar = nl2br(htmlspecialchars($row["Kommentar"])) . $kommentar = str_replace(":)", "<img src="http://www.cs-erweiterungen.de/images/smilies/smile.gif">", $kommentar) . "</div></div>\n";
Es geht leider nicht. Es sieht sehr komisch aus:
http://www.cs-erweiterungen.de/scripts/viewcomments.php
Kann mir jemand helfen?
Danke!
Hi, ich möchte in meinem Kommentarscript :) Smilies mit einem Bild ersetzen. Habe es so versucht:
echo "<div id="comment_text">" . $kommentar = nl2br(htmlspecialchars($row["Kommentar"])) . $kommentar = str_replace(":)", "<img src="http://www.cs-erweiterungen.de/images/smilies/smile.gif">", $kommentar) . "</div></div>\n";
Es geht leider nicht. Es sieht sehr komisch aus:
http://www.cs-erweiterungen.de/scripts/viewcomments.php
Kann mir jemand helfen?
Danke!
Dein echo Befehl sieht nicht schön aus.
(In $kommentar steht der Ursprungskommentar aus der DB?!)
Probier es mal so:
$kommentar = str_replace(":)", "<img src=\"http://www.cs-erweiterungen.de/images/smilies/smile.gif\">", nl2br(htmlspecialchars($row["Kommentar"])));
echo "<div id=\"comment_text\">" . $kommentar . "</div></div>\n";
Den Code habe ich nicht getestet!
Danke geht super :)
Noch eine Frage:
Ist das so nicht richtig?
$smilie = ":)";
$smilie = ";)";
$smilie = ":(";
$link = "<img src="http://www.cs-erweiterungen.de/images/smilies/smile.gif">";
$link = "<img src="http://www.cs-erweiterungen.de/images/smilies/wink.gif">";
$link = "<img src="http://www.cs-erweiterungen.de/images/smilies/frown.gif">";
$kommentar = str_replace($smilie, $link, nl2br(htmlspecialchars($row["Kommentar"])));
echo "<div id="comment_text">" . $kommentar . "</div></div>\n";
Weil so hab ich es in einem Buch gesehen.. geht aber nicht.
Danke geht super :)
Noch eine Frage:
Ist das so nicht richtig?
$smilie = ":)";
$smilie = ";)";
$smilie = ":(";
$link = "<img src="http://www.cs-erweiterungen.de/images/smilies/smile.gif">";
$link = "<img src="http://www.cs-erweiterungen.de/images/smilies/wink.gif">";
$link = "<img src="http://www.cs-erweiterungen.de/images/smilies/frown.gif">";$kommentar = str_replace($smilie, $link, nl2br(htmlspecialchars($row["Kommentar"])));
echo "<div id="comment_text">" . $kommentar . "</div></div>\n";Weil so hab ich es in einem Buch gesehen.. geht aber nicht.
Naja für das letzte Smilie funktioniert es vll. ":("
Du setzt oben $smilie 3x und $link auch. Die vorherige Wert wird durch =
gelöscht.
Du müsstest eine Schleife machen:
$smilie = array( ':)', ';)', ':(' );
$link = array('<img src="http://www.cs-erweiterungen.de/images/smilies/smile.gif">',
'<img src="http://www.cs-erweiterungen.de/images/smilies/wink.gif">',
'<img src="http://www.cs-erweiterungen.de/images/smilies/frown.gif">');
// Nun hast du 2 Arrays, die müssen jetzt durchlaufen werden:
// smilie und link _müssen_ für folgenden code gleich viele Elemente haben!
for($i = 0; $i < count($smilie); $i++) {
echo "<div id=\"comment_text\">" . str_replace($smilie[$i], $link[$i], nl2br(htmlspecialchars($row["Kommentar"])));
}
Du hast da aber ein sehr lehrreiches Buch ;-)
Stimmt das so? Ich bekomme das einfach nicht zu laufen. Liegt das an der while Schleife? Ich geh jetzt schlafen...
$smilie = array( ':)', ';)', ':(' );
$link = array('<img src="http://www.cs-erweiterungen.de/images/smilies/smile.gif">',
'<img src="http://www.cs-erweiterungen.de/images/smilies/wink.gif">',
'<img src="http://www.cs-erweiterungen.de/images/smilies/frown.gif">');
// while-Schleife Anfang
while($row = mysql_fetch_assoc($result2)) {
echo "<div id="comment"><div id="comment_top"><b><span class="comment_date">" . $row["Datum"] . "</span>#".$nr." ";
if (!empty ($row["Homepage"])) { echo "<a href="" . htmlspecialchars($row["Homepage"]) . "" target="_blank">" .
htmlspecialchars($row["Name"]) . "</a></b></div>"; }
else { echo htmlspecialchars($row["Name"]) . "</b></div>"; }
HIERSCHAUEN:
------------------------------------------------------
for($i = 0; $i < count($smilie); $i++) {
$kommentar = str_replace($smilie[$i], $link[$i], nl2br(htmlspecialchars($row["Kommentar"])));
}
echo "<div id="comment_text">" . $kommentar . "</div></div>\n";
$nr++;
} // while Ende
Hello,
Stimmt das so? Ich bekomme das einfach nicht zu laufen. Liegt das an der while Schleife? Ich geh jetzt schlafen...
$smilie = array( ':)', ';)', ':(' );
$link = array('<img src="http://www.cs-erweiterungen.de/images/smilies/smile.gif">',
'<img src="http://www.cs-erweiterungen.de/images/smilies/wink.gif">',
'<img src="http://www.cs-erweiterungen.de/images/smilies/frown.gif">');// while-Schleife Anfang
while($row = mysql_fetch_assoc($result2)) {
echo "<div id="comment"><div id="comment_top"><b><span class="comment_date">" . $row["Datum"] . "</span>#".$nr." ";
if (!empty ($row["Homepage"])) { echo "<a href="" . htmlspecialchars($row["Homepage"]) . "" target="_blank">" .
htmlspecialchars($row["Name"]) . "</a></b></div>"; }
else { echo htmlspecialchars($row["Name"]) . "</b></div>"; }HIERSCHAUEN:
das sollte eigentlich genügen, wenn ich Deine Intention richtig verstanden habe.
str_replace aht sozusagen eine eingebaute Schleife. Das ist bequem.
{
$kommentar = str_replace($smilie, $link, nl2br(htmlspecialchars($row["Kommentar"])));
}
echo "<div id="comment_text">" . $kommentar . "</div></div>\n";
$nr++;
} // while Ende
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hi!
$link = array('<img src="http://www.cs-erweiterungen.de/images/smilies/smile.gif">',
'<img src="http://www.cs-erweiterungen.de/images/smilies/wink.gif">',
'<img src="http://www.cs-erweiterungen.de/images/smilies/frown.gif">');
Für das Image-Tag ist das Attribut "alt" zwingend vorgeschrieben. Du kannst es leer lassen, wenn du willst (was ich aber in keinem Fall empfehlen würde). Du darfst es aber nicht weglassen, wenn du korrekten Code schreiben willst.
Ich bekomme das einfach nicht zu laufen.
Was bedeutet das?
Wenn du eine Fehlermeldung erhälst, dann poste diese hier.
Schöner Gruß,
rob
Hello,
$smilie[] = ":)";
$link[] = "<img src="http://www.cs-erweiterungen.de/images/smilies/smile.gif">";
$smilie[] = ";)";
$link[] = "<img src="http://www.cs-erweiterungen.de/images/smilies/wink.gif">";
$smilie[] = ":(";
$link[] = "<img src="http://www.cs-erweiterungen.de/images/smilies/frown.gif">";
Das Umsortieren habe ich nur gemacht, damit Du siehst, was zusammengehört.
str_replace verarbeitet Arrays, wobei die Elemente über den Index korrespondiereen.
Du kannst die Indexe auch direkt zuweisen.
$kommentar = str_replace($smilie, $link, nl2br(htmlspecialchars($row["Kommentar"])));
echo "<div id="comment_text">" . $kommentar . "</div></div>\n";Weil so hab ich es in einem Buch gesehen.. geht aber nicht.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hi!
Ist das so nicht richtig?
$smilie = ":)";
$smilie = ";)";
$smilie = ":(";
Du überschreibst hier ja jedesmal wieder den Inhalt von $smilie.
$link = "<img src="http://www.cs-erweiterungen.de/images/smilies/smile.gif">";
$link = "<img src="http://www.cs-erweiterungen.de/images/smilies/wink.gif">";
$link = "<img src="http://www.cs-erweiterungen.de/images/smilies/frown.gif">";
Genau wie du hier jedesmal wieder den Inhalt von $link überschreibst.
Vielleicht solltest du ein Array einsetzen..?
$kommentar = str_replace($smilie, $link, nl2br(htmlspecialchars($row["Kommentar"])));
echo "<div id="comment_text">" . $kommentar . "</div></div>\n";
Warum zweimal das schliessende </div>?
Schöner Gruß,
rob