Twilo: [PEAR] BBCode-Klasse mit Smileys's

Hallo,

ich verwende diese BBCode Klasse
http://pear.php.net/package/HTML_BBCodeParser

und möchte auch Smileys (z.B. :-), :-(, etc.) automatisch zu Smileys umwandeln lassen

eine Suche bei Google und im Archiv
http://www.google.com/search?num=100&hl=de&q=BBCode+Parser+smileys+pear&btnG=Suche&lr=
http://suche.de.selfhtml.org/cgi-bin/such.pl?suchausdruck=bbcode+smiley&case=on&feld=alle&index_5=on&index_6=on&index_7=on&index_8=on&index_9=on&index_10=on&index_11=on&hits=100
waren leider vergebens

könnte mir eine ein Tipp geben, wie z.B. der Inhalt aussehen müsste, wenn ich mit dieser Smileys ersetzen lassen möchte?

so sieht es z.B. für ein Link aus

require_once('HTML/BBCodeParser.php');
class HTML_BBCodeParser_Filter_Email extends HTML_BBCodeParser
{
    var $_definedTags = array(  'email' => array(   'htmlopen'  => 'a',
                                                    'htmlclose' => 'a',
                                                    'allowed'   => 'none^img',
                                                    'attributes'=> »» array('email' =>'href=%2$smailto:%1$s%2$s')
                                               )
                              );
    function _preparse()
    {
        $options = PEAR::getStaticProperty('HTML_BBCodeParser','_options');
        $o = $options['open'];
        $c = $options['close'];
        $oe = $options['open_esc'];
        $ce = $options['close_esc'];
        $pattern = array(   "!(^|\s)([-a-z0-9_.]+@[-a-z0-9.]+.[a-z]{2,4})!i",
                            "!".$oe."email(".$ce."|\s.*".$ce.")(.*)".$oe."/email".$ce."!Ui");
        $replace = array(   "\1".$o."email=\2".$c."\2".$o."/email".$c,
                            $o."email=\2\1\2".$o."/email".$c);
        $this->_preparsed = preg_replace($pattern, $replace, $this->_text);
    }
}

ich weiss nicht wirklich, wie ich anfangen soll/muss
über jede Hilfe wäre ich dankbar :-)

mfg
Twilo

  1. Hi!

    ich verwende diese BBCode Klasse
    http://pear.php.net/package/HTML_BBCodeParser

    und möchte auch Smileys (z.B. :-), :-(, etc.) automatisch zu Smileys umwandeln lassen

    Wenn du wirklich nur Smilies à la :-) ;-) automatisch in die entsprechenden Bilder umwandeln möchtest, reicht bereits eine Funktion wie z.B. str_replace:

    $search = array(":-)", ";-)");
    $replace = array("<img src="smilie.png" alt="smilie" />", "<img src="grins.png" alt="grins" />");

    $text = str_replace($search, $replace, $text); # ersetzt alle Vorkommen von
                                                   # :-) ;-) in die Bilder

    Grüße,
    Fabian St.

    --
    Endlich online: http://fabis-site.net
    --> XHTML, CSS, PHP-Formmailer, Linux
    Selfcode: ie:% fl:|  br:^ va:) ls:& fo:) rl:( n4:° ss:| de:> js:| ch:| mo:) zu:)
    1. Hallo,

      ich verwende diese BBCode Klasse
      http://pear.php.net/package/HTML_BBCodeParser

      und möchte auch Smileys (z.B. :-), :-(, etc.) automatisch zu Smileys umwandeln lassen

      Wenn du wirklich nur Smilies à la :-) ;-) automatisch in die entsprechenden Bilder umwandeln möchtest, reicht bereits eine Funktion wie z.B. str_replace:

      $search = array(":-)", ";-)");
      $replace = array("<img src="smilie.png" alt="smilie" />", "<img src="grins.png" alt="grins" />");

      $text = str_replace($search, $replace, $text); # ersetzt alle Vorkommen von
                                                     # :-) ;-) in die Bilder

      es wäre gut, wenn das über die BBCode Klasse funktionieren würde
      zur Zeit hab ich es so ähnlich geregelt, wie du es vorgeschlagen hast

      könnte ich dann ja per BBCode Klasse regeln, ob die Smileys ersetzt werden sollen etc.
      ich weiss, es geht auch so, aber mein System ist schon so geschrieben, dass ich an die BBCode Klasse, Parameter übergebe, was ersetzt werden soll
      mir fehlt das nur noch für die Smileys :)

      mfg
      Twilo

  2. hab es so gelöst

    Datei Names Smileys.php im Ordner Filter erstellen und folgenden Inhalt einfügen

    <?php
    [...]
    require_once('HTML/BBCodeParser.php');
    class HTML_BBCodeParser_Filter_Smileys extends HTML_BBCodeParser
    {
        function _preparse()
        {
            $pattern = array(   ':-)',
                                ':-(');
            $replace = array(   '<img src="/smileys/1.gif" alt="Smile" title="Smile" />',
                                '<img src="/smileys/2.gif" alt="Traurig" title="Traurig" />');
            $this->_preparsed = str_replace($pattern, $replace, $this->_text);
        }
    }
    ?>