Smilie Funktion nicht richtig.

Pixelschubser

Mitglied
Hi,

ich hab nen Gästebuch geschrieben und jetzt endlich alle Bugs ausgemerzt nur einen bekomme ich nicht hin.

Also ich hab es so wie hier im FOrum, das man einen Smilie anklicken kann und der Kürzel :) wird im Text eingefügt.

So weit auch alles kein Problem,
nur manchmal wird der Smilie nicht richtig dargestellt im Beitrag.
Also steht Quellcode drin anstatt des Smilies oder der Smilie wird angezeigt und denn steht da noch hinter boder="0">.

Kommt nicht immer vor, aber zu oft.

Hier mal die Funktion die die Smilies umwandelt.
PHP:
function replace($eintrag) {
	$eintrag = str_replace("\r\n", "<br>", $eintrag);
	$eintrag = str_replace(":-)", "<img src=\"images/smile.gif\">", $eintrag);
	$eintrag = str_replace(":)", "<img src=\"images/smile.gif\">", $eintrag);
	$eintrag = str_replace(";-)", "<img src=\"images/zwinker.gif\">", $eintrag);
	$eintrag = str_replace(";)", "<img src=\"images/zwinker.gif\">", $eintrag);
	$eintrag = str_replace(":-(", "<img src=\"images/traurig.gif\">", $eintrag);
	$eintrag = str_replace(":(", "<img src=\"images/traurig.gif\">", $eintrag);
	$eintrag = str_replace(":-D", "<img src=\"images/d.gif\">", $eintrag);
	$eintrag = str_replace(":D", "<img src=\"images/d.gif\">", $eintrag);
	$eintrag = str_replace("(H)", "<img src=\"images/cool.gif\">", $eintrag);
	$eintrag = str_replace("(h)", "<img src=\"images/cool.gif\">", $eintrag);
	$eintrag = str_replace(":-O", "<img src=\"images/o.gif\">", $eintrag);
	$eintrag = str_replace(":O", "<img src=\"images/o.gif\">", $eintrag);
	$eintrag = str_replace(":P", "<img src=\"images/p.gif\">", $eintrag);
	$eintrag = str_replace(":p", "<img src=\"images/p.gif\">", $eintrag);
	$eintrag = str_replace(":S", "<img src=\"images/s.gif\">", $eintrag);
	$eintrag = str_replace(":s", "<img src=\"images/s.gif\">", $eintrag);

	return $eintrag;
}

Jemand eine Idee?
 
Hi,

ich sollte vielleicht noch schreiben, das ich diese Funktion 2 mal habe.
Also einmal so um den neu erstellten Beitrag in die DB zu schreiben.

Und dann einmal genau anders rum wenn die Daten aus der DB kommen um anstatt :) das Bild anzuzeigen.

Falls es daran liegt.

Bin für jeden Tipp dankbar!
Würde auch ne neue Funktion nehmen.

Mich wundert halt das es mannchmal ohne Probs geht und dann auf einmal nicht mehr. Wie es gerade so will.
 
Hallo !

Ich verstehe zwar dein Problem nicht so direkt, aber deine Funktion kann man trotzdem ein bischen optimieren.

PHP:
function replace($eintrag) {
    $search = array(
        0 => "\r\n",
        1 => ':-)',
        2 => ':)',
        3 => ';-)',
        4 => ';)',
        5 => ':-(',
        6 => ':(',
        7 => ':-D',
        8 => ':D',
        9 => '(H)',
        10 => '(h)',
        11 => ':-O',
        12 => ':O',
        13 => ':-P',
        14 => ':P',
        15 => ':-p',
        16 => ':p',
        17 => ':-S',
        18 => ':-s'
    );
    $search = array(
        0 => '<br />',
        1 => '<img src="images/.gif">',
        2 => '<img src="images/.gif">',
        3 => '<img src="images/.gif">',
        4 => '<img src="images/.gif">',
        5 => '<img src="images/.gif">',
        6 => '<img src="images/.gif">',
        7 => '<img src="images/.gif">',
        8 => '<img src="images/.gif">',
        9 => '<img src="images/.gif">',
        10 => '<img src="images/.gif">',
        11 => '<img src="images/.gif">',
        12 => '<img src="images/.gif">',
        13 => '<img src="images/.gif">',
        14 => '<img src="images/.gif">',
        15 => '<img src="images/.gif">',
        16 => '<img src="images/.gif">',
        17 => '<img src="images/.gif">',
        18 => '<img src="images/.gif">'
    );

    $eintrag = str_replace($search,$replace,$eintrag);

    return $eintrag;
}

Dadurch hast du nur einmal den zeitraubenden Funktionsaufruf von str_replace(); und nicht für jeden Smiley einmal und der Inhalt der Smilies bzw. Bilder wird nicht ausgewertet (wie zwischen " und ") sondern einfach nur ausgegeben (da zwischen ' und ').

Gruß thing
 
Zuletzt bearbeitet:
Hi,

auch mit der Funktion tritt der Fehler auf.

Also ich hab 8 Smilies.

Wenn ich alle nach einander anklicke so das da steht:
:) :( :-) :-( ;) :p :rolleyes: ;-) :mad: :eek:

Zeigt er nachher im Beitrag 3 SMilies an dann einmal img scr="d.gif"> dann wieder einen Smilie dann wieder murks usw...


Wieso kommt das?

Warum geht die Funktion manchmal und warum manchmal nicht

Zum Haare ausreissen...
 
Hi

Ich kann dir zwar leider net helfen aber könntest du mir vielleicht diese Quelltext zeilen schicken? Ich würde diese auch brauchen für ein newsscript. Wie machst du das, dass wenn du ein smilie anklickst, der text dann automatisch in das Schreibfenster eingetragen wird?

Bitte script an Peugeot206@inode.at wenns geht ;)
 
Hi,

also in den Head Bereich deiner Seite schreibst Du folgendes:

Code:
<SCRIPT language="Javascript">
function printsmilies(smname) {
formular.eintrag.value+= smname;
}
function smilie(thesmilie) {
// Gibt den Smilie Text aus.
	document.formular.eintrag.value += thesmilie+" ";
	document.formular.eintrag.focus();
}

</SCRIPT>

Dann gibst Du deinem Formular einen Namen:
Code:
<form action="datei.php" method="post" name="formular" >

Dann gibst Du deinem Textbereich einen Namen:
Code:
<textarea name="eintrag" cols="50" rows="7"></textarea>

Und deinem Smilies gibst Du folgenden Link:
Code:
<a href="#" onClick="printsmilies(':O')"><img src="images/o.gif" width="21" height="21" alt="" border="0"></a>

Das war's auch schon.

Wenn Du jetzt auf deinen Smilie klickst, wird der Kürzel (im Beispiel :O) im Textbereich eingefügt.

Die Funktion zum Umwandeln der Smilie Kürzel in Smilie Bilder haste ja oben.
Nur halt das der beschriebene Fehler auftritt. Bei mir jedenfalls.
 
Thx das mit dem wenn ich ein Smilie einfüge, dass er das dann in den Text einfügt funktioniert schon mal :D die smilies richtig ausgeben tue ich dann mit deinem Quelltext von dem 1. Beispiel oder?
 
Zurück