smiley einsetz funktion läuft nicht str_replace

lunatic0815

Mitglied
also wie gesagt, mein gästebuch läuft wunderbar... nur die smileys wollen nicht. hab dafür nur das gemacht. Die andreren replace funktionen sind für die html tag sperre...

PHP:
$name = ereg_replace("<","&lt;",$name);
$name = ereg_replace(">","&gt;",$name);
$mail = ereg_replace("<","&lt;",$mail);
$mail = ereg_replace(">","&gt;",$mail);
$url = ereg_replace("<","&lt;",$url);
$url = ereg_replace(">","&gt;",$url);
$text = str_replace(":)","<img src=\"smilie07.gif\" border=0>",$text);
$text = ereg_replace("<","&lt;",$text);
$text = ereg_replace(">","&gt;",$text);
 
PHP:
$text = str_replace("<img src="images/smilies/smile.gif" border="0" alt="">","<img src=\"smilie07.gif\" border=0>",$text);
wenn ich das richtig sehe, fehlen da nur die escape-sequenzen für die anführungszeichen. das sollte also so aussehen:
PHP:
$text = str_replace("<img src=\"images/smilies/smile.gif\" border=\"0\" alt=\"\">","<img src=\"smilie07.gif\" border=0>",$text);
 
du machst dir dein Img-Tag kaputt.

nach dieser zeile waere das bild noch da:
$text = str_replace("<img src="images/smilies/smile.gif" border="0" alt="">","<img src=\"smilie07.gif\" border=0>",$text);
aber alllein die naechste macht dir das kaputt.
$text = ereg_replace("<","&lt;",$text);

Denn dann steht bei dir im string:
$text: "...&amp;lt;img src=\"smilie07.gif\..."

Frage: wieso benutzt du html-tags zum smilie einfuegen, waere da eine art ubb-code nicht besser? Ist auf jeden Fall leichter zu parsen :)

wenn du die html-tag beibehalten willst bzw. musst, dann musst du ereg_replace oder preg_replace benutzen, da du ein suchmuster brauchst.

Koennte so aussehen:
PHP:
preg_replace("/(<\/?)(\w+)([^>]*)(>)/e","if (strtolower(\\\\2)=="img") {'\\\\1\\\\2\\\\3\\\\4'} else {'&amp;lt;\\\\2\\\\3&amp;gt;'}");
 
na dann:
PHP:
$text = str_replace(":)","<img src=\"smilie07.gif\" border=0>",$text);
$text = str_replace(":(","<img src=\"smilie05.gif\" border=0>",$text);

und so weiter
 
Zurück