Smiley Textsetzer
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
beibehalten
bild
code
dank
datei
definition
ersetzen
funktion
grad
http
komplett sparen
listen
mache
problem
schleife
text
texten
vergessen
welt
-
Hi Leutz,
ich wollte grade ne Funktion schreiben, mit der ich Smileys in Texten, wie \":-)\" oder \":-<\" durch Bilder ersetzen kann, ohne für jedes einzelne Smiley ein str_replace() einbauen zu müssen. Habe dabei aber einige Probleme.
Ich dachte mit zunächst mache ich ne Datei für alle Definitionen.
// Def.Smile.php ---> <? $Smile_Type[1] = \'8-o\'; $Smile_Type[2] = \'%-)\'; $Smile_Type[3] = \':-<\'; $Smile_Type[4] = \':yes:\'; ... $Smile_Addr[1] = \'smile/bigeek.gif\'; $Smile_Addr[2] = \'smile/rolleyes.gif\'; $Smile_Addr[3] = \'smile/mad.gif\'; $Smile_Addr[4] = \'smile/yes.gif\'; ... $Smile_Total = 12; // Sind insg. 12 Stück, aber ich hab die Listen ein bisschen gekürzt ?> //! Def.Smile.php <---
Dann hab ich da die Datei, in der die Funktion vorhanden ist.
// Func.Smile.php ---> <? require(\'Def.Smile.php\'); function smile($text) { for ($i=0; $i<=$Smile_Total; $i++) { $text = str_replace($Smile_Type[$i], \'<img src=\\\"\'.$Smile_Addr[$i].\'\\\" border=\\\"0\\\">\', $text); } return $text; } ?> //! Func.Smile.php <---
und wenn ich nun einen Beispieltext damit versehe á la:
echo smile(\'Hallo :-) Welt :-<\');
Dann wird dieser Text ausgegeben, ohne sich im geringsten verändert zu haben. Und ich verstehe einfach nicht warum, könnt ihr mir da helfen ?
Gruß
VampireSilence -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
str_replace nimmt auch Arrays als \"Werte\", somit kannst du str_replace($Smile_Type,$Smile_Addr,$text) verwenden ohne die str_replace für jedes Element einzeln durchlaufen zu müssen.
-
D.h. also ich kann mir die For-Schleife komplett sparen und mache einfach:
// Func.Smile.php ---> <? require(\'Def.Smile.php\'); function smile($text) { $text = str_replace($Smile_Type, \'<img src=\\\"\'.$Smile_Addr.\'\\\" border=\\\"0\\\">\', $text); return $text; } ?> //! Func.Smile.php <---
So ? Das wäre ja schon gleich wesentlich leichter !
Gruß
VampireSilence -
Ja, allerdings darfst du nicht vergessen die beiden Arrays in der Funktion verfügbar zu machen. Entweder definierst du sie direkt dort oder du bindest sie mit GLOBAL $array; in die Funktion ein.
-
Danke, deine Vorschläge haben zum Erfolg geführt !
Habe lediglich die For-Schleife doch beibehalten, weil alle Smileys die Adresse \"http://vampiresilence.lima-city.de/%5C%22Array%5C%22\" hatten.
Und die Def.Smile.php ist nun innerhalb der smile()-Funktion via include() eingebunden. Nun geht es, danke !!
Gruß
VampireSilence
Beitrag geändert: 31.5.2008 3:01:40 von vampiresilence -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage