Dynamische Smilies

Lobedan

Mitglied
Hi Leute,

ich mag meine Smilies ganz dynamisch über die Datenbank laufen lassen aber wenn ich versuche es auszugeben werden die Codes nicht ersetzt hier mal der Code:

PHP:
function smilieReplace($txt) {

	include ("inc/db.connect.php");
	include ("inc/config.inc.php");
	
	$select = $db->query("SELECT * FROM ".$prefix."smilies");
	
	while ($s = $db->ar($select)) {
	
		$source = $s['code'];
		$imagepath = "images/".getDesign('images')."/smilies/";
		$target = "<img src='".$imagepath."".$s['smilie'].".".$s['ext']."'>";
	
	 $a = str_replace($source, $target, $txt);
	
	}

	return $a;
 
}

Ich hab als beispiel mal

PHP:
$text = ":rolleyes:
:D :D :D 8)
:evil:";
echo smilieReplace($text);

genommen und wie ich des auch überhaupt nicht so will aber der spuckt mir den rohen Text also ohne was zu ersetzen aus

Hat jemand eine Idee Die Suche hat nichts brauchbares ergeben :(
 
Hi,

erstmal:
Du ersetzt jedesmal "$a" neu, da es ja in der while Schleife ist, obwohl du $text andauernd replaced.

Hast du schonmal deine ganzen Variablen "geechot´" :P ?

bo
 
Das Problem ist die Zeile
$a = str_replace($source, $target, $txt);

Sagen wir mal du hast die Smilies :) :D :(
und den Text

Code:
blub :) bla :D

Im ersten Durchlauf der Schleife werden alle :), durch den Smilie Ersetzt
in der variable $a steht dann
blub :) bla :D
und in der Variable $txt steht dann noch immer
Code:
blub :) bla :D
Im zweiten Durchlauf nimmst du wieder die varialbe $text
und ersetzt alle :) durch :D
nun sieht $a so aus
blub :) bla :D
und $text
Code:
blub :) bla :D
undso weiter

Deswegen kriegt du kein richtiges Ergebnis

Wenn du nun aber
die Zeile
PHP:
$a = str_replace($source, $target, $txt);

durch diese ersetzt
PHP:
$txt = str_replace($source, $target, $txt);
geht es.
Dann muss du nur noch den return anpassen.
 
Zurück