kostenloser Webspace werbefrei: lima-city


PHP Shoutbox mit Smilies

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    Hallo !

    Ich habe mir eine kleine Shoutbox programmiert mit Smilies, wo beim drauf klicken auch schon die Zeichen in das Eingabefeld eingefügt werden.

    Wie kann ich diese Zeichen bei der Ausgabe in die Smilies (gif) umwandeln?

    Mfg
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo,
    $ausgabe = str_replace(":-)","<img src='smilie.gif'>",$ausgabe);

    Gruß
    styVe (qap2-Team)
  4. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    qap2 schrieb:
    Hallo,
    $ausgabe = str_replace(":-)","<img src='smilie.gif'>",$ausgabe);

    Gruß
    styVe (qap2-Team)


    In der Variable $ausgabe ist dann der Text des Eintrages?
  5. industry-giant

    industry-giant hat kostenlosen Webspace.

    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
  6. 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
  7. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    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
  8. 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
  9. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    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("&auml;","&ouml;","&uuml;","&Auml;","&Uuml;","&Ouml;","&szlig;"); 
    
    
    
    	// 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?
  10. 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
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!