PHP Shoutbox mit Smilies
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ansichtssache
array
ausgabe
auslese
aussehen
code
date
eintrages
folgendem muster
image
leere string
message
ordern
output
schleife
stimmen
symbol
team
text
zeichen
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Das ganze lässt sich auch mit einem bb code realisieren:
<?php error_reporting(E_ALL | E_NOTICE); function parseBBCode2HTML( $bb ) { $bb = preg_replace('/\[smilie1\](.*?)\[\/smilie1\]/', '<img src="/img/smile.gif" >$2</img>', $bb); return $bb; } $formatiert = parseBBCode2HTML( $text ); echo $formatiert;?>
als zeichen für den ersten smilie muss dann folglicherweise das eingefügt werden (in die eingabebox deiner Shoutbox)
[smilie1] [/smilie1]
der smilie im Ordner /img mit dem namen smilie.gif sollte dann eingefügt werden
ist aber im vergleich der lösung von qap2 eher unvorteilhafter bei nur einem smilie -
Ja, das ist der eingegebene Text. Mit einem Array kann man so alle möglichen Smilies einfügen.
$smilies = array(":-)" => "<img src='smilie1.gif'>",":-(" => "<img src='smilie2.gif'>",":-/" => "<img src='smilie3.gif'>"); foreach($smilies as $symbol => $picture) { $output = str_replace($symbol,$picture,$output); } die($output);
Gruß
styVe -
Danke !
Werde ich mal probieren !
Ist dieser Code richtig?
$row['message'] = str_replace(" [sm1] ","<img src='images/smilies/1.gif'>",$row['message']); $row['message'] = str_replace(" [sm2] ","<img src='images/smilies/2.gif'>",$row['message']); $row['message'] = str_replace(" [sm3] ","<img src='images/smilies/3.gif'>",$row['message']); $row['message'] = str_replace(" [sm4] ","<img src='images/smilies/4.gif'>",$row['message']); $row['message'] = str_replace(" [sm5] ","<img src='images/smilies/5.gif'>",$row['message']); $row['message'] = str_replace(" [sm6] ","<img src='images/smilies/6.gif'>",$row['message']); $row['message'] = str_replace(" [sm7] ","<img src='images/smilies/7.gif'>",$row['message']); $row['message'] = str_replace(" [sm8] ","<img src='images/smilies/8.gif'>",$row['message']); $row['message'] = str_replace(" [sm9] ","<img src='images/smilies/9.gif'>",$row['message']); $row['message'] = str_replace(" [sm10] ","<img src='images/smilies/10.gif'>",$row['message']); $row['message'] = str_replace(" [sm11] ","<img src='images/smilies/11.gif'>",$row['message']); $row['message'] = str_replace(" [sm12] ","<img src='images/smilies/12.gif'>",$row['message']); $row['message'] = str_replace(" [sm13] ","<img src='images/smilies/13.gif'>",$row['message']); $row['message'] = str_replace(" [sm14] ","<img src='images/smilies/14.gif'>",$row['message']); $row['message'] = str_replace(" [sm15] ","<img src='images/smilies/15.gif'>",$row['message']); $row['message'] = str_replace(" [sm16] ","<img src='images/smilies/16.gif'>",$row['message']); $row['message'] = str_replace(" [sm17] ","<img src='images/smilies/17.gif'>",$row['message']); $row['message'] = str_replace(" [sm18] ","<img src='images/smilies/18.gif'>",$row['message']); $row['message'] = str_replace(" [sm19] ","<img src='images/smilies/19.gif'>",$row['message']); $row['message'] = str_replace(" [sm20] ","<img src='images/smilies/20.gif'>",$row['message']); $row['message'] = str_replace(" [sm21] ","<img src='images/smilies/21.gif'>",$row['message']); $row['message'] = str_replace(" [sm22] ","<img src='images/smilies/22.gif'>",$row['message']);
Bei mir funktioniert er nicht.
Beitrag zuletzt geändert: 19.2.2010 19:16:54 von davy -
Wenn deine Smilies "[smx]" so aussehen, müsste es stimmen. Du benutzt aber eine Schleife, oder? So ein Quelltext wäre etwas... umständlich. Habe gerade erfahren, dass man str_replace() auch Arrays mitgeben kann. Du kannst es also nach folgendem Muster machen:
<?php $replaced = array(" [sm1] "," [sm2] "," [sm3] "," [sm4] "," [sm5] "); $replaces = array("images/smilies/1.gif","images/smilies/2.gif","images/smilies/3.gif","images/smilies/4.gif","images/smilies/5.gif"); $row['message'] = str_replace($replaced,$replaces,$row['message']); ?>
Bei deinen Smilies wäre es allerdings genausogut möglich folgendermaßen vorzugehen:
<?php $anzahlSmilies = 22; for($i=1;$i <= $anzahlSmilies;$i++) { $row['message'] = str_replace(" [sm$i] ","<img src='images/smilies/$i.gif'>",$row['message']); } ?>
Gruß styVe
Edit
Wenn es nicht funktioniert: achte auf die Leerzeichen rechts und links des Smilies.
Beitrag zuletzt geändert: 19.2.2010 19:35:51 von qap2 -
qap2 schrieb:
Wenn deine Smilies "[smx]" so aussehen, müsste es stimmen. Du benutzt aber eine Schleife, oder? So ein Quelltext wäre etwas... umständlich. Habe gerade erfahren, dass man str_replace() auch Arrays mitgeben kann. Du kannst es also nach folgendem Muster machen:
<?php $replaced = array(" [sm1] "," [sm2] "," [sm3] "," [sm4] "," [sm5] "); $replaces = array("images/smilies/1.gif","images/smilies/2.gif","images/smilies/3.gif","images/smilies/4.gif","images/smilies/5.gif"); $row['message'] = str_replace($replaced,$replaces,$row['message']); ?>
Bei deinen Smilies wäre es allerdings genausogut möglich folgendermaßen vorzugehen:
<?php $anzahlSmilies = 22; for($i=1;$i <= $anzahlSmilies;$i++) { $row['message'] = str_replace(" [sm$i] ","<img src='images/smilies/$i.gif'>",$row['message']); } ?>
Gruß styVe
Edit
Wenn es nicht funktioniert: achte auf die Leerzeichen rechts und links des Smilies.
Hallo,
ich habe mein Script jetzt so geschrieben:
(Ausschnitt aus dem Code)
// Datensätze ermitteln $dbresult = $db->Query("SELECT * FROM shoutbox ORDER BY ID DESC LIMIT 0,20"); $old=array("ä","ö","ü","Ä","Ü","Ö","ß"); $new=array("ä","ö","ü","Ä","Ü","Ö","ß"); // Datensätze auslesen und formatieren while ($row = mysql_fetch_assoc($dbresult)) { $anzahlSmilies = 22; for($i=1;$i <= $anzahlSmilies;$i++) { $row['message'] = str_replace(" [sm$i] ","<img src='shoutbox/images/smilies/$i.gif'>",$row['message']); } echo "<span class=\"name\">".date("H:i", $row['timestamp'])." - ".str_replace($old,$new,$row['name']).":</span>"; echo "".str_replace($old,$new,$row['message'])."<br />"; } ?>
Ist der Code gut? Oder könnte man was verbessern? -
Sieht gut aus, so wie es ist. Nur der leere String vor der Ausgabe der Nachricht kann weg.
Statt escapeten Anführungsstrichen könntest du auch Hochkommata benutzen, finde ich persönlich ein bisschen übersichtlicher. Ist aber Ansichtssache. :-)
Grüße
styVe -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage