Textstelle mit Grafik ersetzen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufruf
aussehen
bar
befehl
beginnen
beitrag
bild
datei
eintrag
entry
error
funktion
klammern
parameter
schreibe
semikolon
smilie
speicher
zeichenkette
zeile
-
Hallo!
Ich wollte mal wissen, wie ich machen kann, dass auf einer Seite, wenn ich gewisse Begriffe schreibe diese durch eine Grafik ersetzt werden (?hnlich wie im MSN)...
Also wenn ich z.B. ":D" im Sourcecode schreibe, sollte dies z.B. durch ein "" bei der Anzeige der Seite ersetzt werden...
Ich denke man muss da irgendwie ne Datenbank machen und dort die Grafiken mit dem zu ersetzenden Text abspeichern und dann?
Kennt jemand ein Tut?
Danke schon mal f?r eure Hilf!
Pascal
Beitrag ge?ndert am 12.03.2006 16:55 von valvefriends -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
$string=':D'; $string=str_replace(':D','<img src="">',$string); echo $string
So sollte es gehen. -
nicht so?
$string=':D'; $string=str_replace(':D','<img src="">',$string);
echo $string;
???
ich w?rds so machen
Beitrag ge?ndert am 12.03.2006 17:03 von ct2004 -
Danke f?r eure schnellen Antworten, und wo muss ich das jetzt speichern? In einer PHP-Datei und die dann includen? Brauche ich also keine Datenbank?
-
valvefriends schrieb:
Danke f?r eure schnellen Antworten, und wo muss ich das jetzt speichern? In einer PHP-Datei und die dann includen? Brauche ich also keine Datenbank?
Entweder in seperater PHP-Datei und includen oder in jedes Script schreiben, in dem :D durch ein Bild erstetzt werden soll. Mit der Funktion str_replace() ersetzt du ja deine Zeichenkette (:D) durch das Bild (<img src="">). -
du kannst dir 'ne sch?ne funktion daraus schreiben, z.b.:
function replaceSmilies($s) { $codes = array(":D", ":)"); $replace = array("img1", "img2"); for ($i = 0; $i < count($codes); $i++) $s = str_replace($codes[$i], "<img src=\"".replace[$i]."\" alt=\"".$codes[$i]."\" />"; return $s; }
und jeden text, bei dem du die smilies ersetzen willst, musst du nun eben mit
replaceSmilies("Foo Bar, some more text :)");
oder in der kurzform
<?=replaceSmilies("Foo Bar, some more text :)")?>
aufrufen.
mfg, SIE -
Aber das wird dann irgendwie gar nicht ersetzt wenn ich ":D" schreibe, bleibt es ":D" und wird nicht ""... nur wenn ich anstatt ":D" im Sourcecode "<? echo $string; ?>" hinschreibe klappts...
@sie: da sagt er mit dann 'error on line 17', also irgendwo hier '$s = str_replace($codes[$i], "<img src=\"".replace[$i]."\" alt=\"".$codes[$i]."\" />";
'...
Beitrag ge?ndert am 12.03.2006 17:34 von valvefriends -
@sie: da sagt er mit dann 'error on line 17', also irgendwo hier '$s = str_replace($codes[$i], "<img src=\"".replace[$i]."\" alt=\"".$codes[$i]."\" />";
'...
jep, haben sich zwei kleine fehlerchen eingeschlichen: es muss $replace[$i] hei?en (ich find's nervig, variablen in php immer mit einem dollar-symbol zu beginnen...) sowie eine fehlende schlie?ende klammer am ende der zeile, also vor dem semikolon. -
sowie eine fehlende schlie?ende klammer am ende der zeile, also vor dem semikolon.
Wo soll die Klammer hin? Nach dem Semikolon... was is den des?
Ich kappier die anwendung noch nicht ganz. Ist das so richtig:
Ich pantsche die Funktion in den Header... und was muss ich dann mit dem hier machen?
replaceSmilies("Foo Bar, some more text :)");
Beitrag ge?ndert am 12.03.2006 18:10 von valvefriends -
ein semikolon ist ein sog. "strichpunkt". die fehlerhafte zeile m?sste also so aussehen:
$s = str_replace($codes[$i], "<img src=\"".$replace[$i]."\" alt=\"".$codes[$i]."\" />");
Die funktion setzt du irgendwo am beginn der seite hin (kann aber auch am ende stehen, bleibt dir ?berlassen) oder du packst sie in eine externe datei und bindest diese ?ber include oder require (am besten include_once oder require_once) ein.
die Funktion muss dann dort aufgerufen werden, wo du den text ersetzt haben willst. nehmen wir mal an, du hast ein g?stebuch und der eintrag, der ausgegeben werden soll, befindet sich in der variablen $entry. Normalerweise w?rdest du den test dann folgenderma?en ausgeben (nat?rlich nachdem du vorher html und co. ausgefiltert hast):
echo $entry;
um die smilies nun aber zu ersetzen, musst du folgenderma?en den eintrag ausgeben:
echo replaceSmilies($entry);
mgf, SIE
PS: In der funktion solltest du die beiden array anpassen. das erste enth?llt die codes, die ersetzbar sein sollen, das zweite die bilder, die als ersatz angezeigt werden sollen. -
Oke, danke f?r die ausf?hrliche Antwort !
Aber irgendetwas an der ber?chtigten Linie 17 stimmt immer noch nicht, schau mal:
Warning: Wrong parameter count for str_replace() in pfad_zur_datei\aboutme.php on line 17
Darf ich eigentlich keine HTML-Befehle mit einbeziehen, bei dem Text bei dem er die Strings ersetzten soll? Ich dachte, ich k?nnte einfach zu oberst den Befehl auf und zu unterst wieder zu machen... geht aber irgendwie nicht...
Beitrag ge?ndert am 12.03.2006 18:57 von valvefriends -
str_replace() ben?tigt drei Parameter. Siehe http://de.php.net/manual/de/function.str-replace.php
Somit m?sste der Befehl ungef?hr so aussehen:
$s = str_replace($codes[$i], "<img src=\"".$replace[$i]."\" alt=\"".$codes[$i]."\" />", $zeichenkette); -
Und wie m?sste diese '$zeichenkette' heissen? Sry, ich habe keine Ahnung von PHP, habe es mit '$s' versucht und mit '$replacesmilies', mit beiden ging's nicht...
-
valvefriends schrieb:
Und wie m?sste diese '$zeichenkette' heissen? Sry, ich habe keine Ahnung von PHP, habe es mit '$s' versucht und mit '$replacesmilies', mit beiden ging's nicht...
Wenn Du die Funktion von sie benutzt, muss $s als letzter Parameter angegeben werden. Der Aufruf erfolgt durch replaceSmilies("Text, der nach Smilies durchk?mmt werden soll") -
Das will bei mir einfach nich, ich habe es jetzt so gemacht (beispiel.php):
<html>
<head>
<title>Replace Smilies</title>
<?
function replaceSmilies($s)
{
$codes = array(";)", ":)");
$replace = array("img/wink.gif", "img2");
for ($i = 0; $i < count($codes); $i++)
$s = str_replace($codes[$i], "<img src=\"".$replace[$i]."\" alt=\"".$codes[$i]."\" />", $s);
return $s;
}
?>
</head>
<body>
<?
replaceSmilies("Text, welcher zu einem Smilie werden sollte: ;) !")
?>
</body>
</html>
Was ist an dem noch nicht richtig? Es gibt zwar keine Fehlermeldung, aber der Text wird gar nicht mehr angezeigt... -
es muss
<?
echo replaceSmilies("Text, welcher zu einem Smilie werden sollte: ;) !");
?>
oder
<?=replaceSmilies("Text, welcher zu einem Smilie werden sollte: ;) !")?>
hei?en, sonst ersetzt die funktion zwar, aber zeigt eben nichts an :) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage