malte: bbcodes

Hi,

ich bin dabei gerade meine eigenen BBcodes zu schreiben. Das klappt auch alles. Jetzt habe ich nur noch bei zwei Sachen Probleme. Einmal, will ich es mit dem Link machen, also das mit dem ]url] und dann wenn es in php tags steht ]php] das es highlight gesetzt wird. nur wie kann ich das machen, hier mal meien bbcodes:

  
<?php  
  
$bb_codes = array(  
  
  '[b]' => '<span style="font-weight:bold">',  
  '[/b]' => '</span>',  
  
  '[i]' => '<span style="font-style:italic">',  
  '[/i]' => '</span>',  
  
  '[u]' => '<span style="text-decoration:underline">',  
  '[/u]' => '</span>',  
  
  '[code]' => '<td class="code"><span style="color:#445270;font-size:12px">',  
  '
~~~' => '</span></td>'  
  );  
  
?>  
[/code]
  1. Hallo,

    ich bin dabei gerade meine eigenen BBcodes zu schreiben.

    Das brauchst du doch gar nicht, Christian Seiler hat doch eine solch wunderbare BBCode PHP Klasse geschrieben und ich glaube irgendwie dass er an alles gedacht hat, ich konnte nämlich bis jetzt alles umsetzen was ich mir überhaupt ausgedacht habe - und das in validen HTML code! http://www.christian-seiler.de/projekte/php/bbcode/

    Das klappt auch alles. Jetzt habe ich nur noch bei zwei Sachen Probleme. Einmal, will ich es mit dem Link machen, also das mit dem ]url] und dann wenn es in php tags steht ]php] das es highlight gesetzt wird.

    Du meinst wohl [url] und [php]?

    '[b]' => '<span style="font-weight:bold">',
      '[/b]' => '</span>',

    Ähm also ich würde das gleich in <strong> umsetzen lassen.

    '[i]' => '<span style="font-style:italic">',
      '[/i]' => '</span>',

    Und das in <em>.

    '[u]' => '<span style="text-decoration:underline">',
      '[/u]' => '</span>',

    Im Internet sollten IMHO _nur_ Links unterstrichen werden, oder willst du das für den Drucker formatieren?

    '~~~

    ' => '<td class="code"><span style="color:#445270;font-size:12px">',

    '

    Was machen diese Tabellen Teile da drinn? Schmeiß mal ganz schnell den ganzen <span> Schmarn raus, das willst du nicht drinn haben und schau dir mal die Klasse an, die ist genau das was du brauchst. Oder hast du auch an richtige verschachtelungen gedacht?  
      
    Grüße  
    Jeena Paradies
    
    -- 
    [Stoppt Softwarepatente](http://jeenaparadies.net/weblog/2005/jul/softwarepatente) in Europa [update] | [Jlog](http://jeenaparadies.net/webdesign/jlog/) | [Gourmetica Mentiri](http://jeenaparadies.net/gourmetica-mentiri/)
    
    1. Hallo,

      ich bin dabei gerade meine eigenen BBcodes zu schreiben.
      Das brauchst du doch gar nicht, Christian Seiler hat doch eine solch wunderbare BBCode PHP Klasse geschrieben und ich glaube irgendwie dass er an alles gedacht hat, ich konnte nämlich bis jetzt alles umsetzen was ich mir überhaupt ausgedacht habe - und das in validen HTML code! http://www.christian-seiler.de/projekte/php/bbcode/

      wenn man da durchsteigen würde, wäre sie bestimmt ganz brauchbar ;-)
      eine Zeit lang hab ich folgendes benutzt
      pear@HTML_BBCodeParser
      aktuell verwende ich smarty@BBCodePlugin
      die BB-Code Funktion für Smarty gefällt mir zwar nicht wirklich

      gibt es ne Möglichkeit die Klasse (http://www.christian-seiler.de/projekte/php/bbcode/)von von Smarty aus aufzurufen?

      vorher bräcuhte ich aber noch eine gescheite Doku, denn bei der aktuellen steig, bzw. stieg ich nicht durch
      wäre gut, wenn da ein paar Beispiele wären :-(

      mfg
      Twilo

      1. ich habe das mit diesem smarty code gemacht, bekomme aber nichts ausgeben

          
        <!--  (c) Copyright by http://www.webmaster-elite.de | Ein Template von Webmaster-Elite.de // nur das Design-->  
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
        <html>  
        <head>  
        <style type="text/css">  
        ul.bb-list-unordered { }  
        ol.bb-list-ordered { }  
        ol.bb-list-ordered-d { list-style-type:decimal; }  
        ol.bb-list-ordered-lr { list-style-type:lower-roman; }  
        ol.bb-list-ordered-ur { list-style-type:upper-roman; }  
        ol.bb-list-ordered-la { list-style-type:lower-alpha; }  
        ol.bb-list-ordered-ua { list-style-type:upper-alpha; }  
        ol.bb-listitem { }  
          
        .bb-code,  
        .bb-php {  
          border: 1px solid black;  
          padding: 10px;  
          font-family: Courier;  
          white-space: nowrap;  
        }  
          
        .bb-quote {  
          border: 1px solid black;  
          padding: 10px;  
        }  
          
        .bb-email { }  
        .bb-url { }  
          
        .bb-image {  
          border-width: 0;  
          border-style: none;  
        }  
        </style>  
        </head>  
        <body>  
        <?php  
          
        $message = $_POST["text"];  
          
        function smarty_modifier_bbcode2html($message) {  
          $preg = array(  
                  '/(?<!\\\\)\[color(?::\w+)?=(.*?)\](.*?)\[\/color(?::\w+)?\]/si'   => "<span style=\"color:\\1\">\\2</span>",  
                  '/(?<!\\\\)\[size(?::\w+)?=(.*?)\](.*?)\[\/size(?::\w+)?\]/si'     => "<span style=\"font-size:\\1\">\\2</span>",  
                  '/(?<!\\\\)\[font(?::\w+)?=(.*?)\](.*?)\[\/font(?::\w+)?\]/si'     => "<span style=\"font-family:\\1\">\\2</span>",  
                  '/(?<!\\\\)\[align(?::\w+)?=(.*?)\](.*?)\[\/align(?::\w+)?\]/si'   => "<div style=\"text-align:\\1\">\\2</div>",  
                  '/(?<!\\\\)\[b(?::\w+)?\](.*?)\[\/b(?::\w+)?\]/si'                 => "<span style=\"font-weight:bold\">\\1</span>",  
                  '/(?<!\\\\)\[i(?::\w+)?\](.*?)\[\/i(?::\w+)?\]/si'                 => "<span style=\"font-style:italic\">\\1</span>",  
                  '/(?<!\\\\)\[u(?::\w+)?\](.*?)\[\/u(?::\w+)?\]/si'                 => "<span style=\"text-decoration:underline\">\\1</span>",  
                  '/(?<!\\\\)\[center(?::\w+)?\](.*?)\[\/center(?::\w+)?\]/si'       => "<div style=\"text-align:center\">\\1</div>",  
          
                  //  [php]  
                  '/(?<!\\\\)\[code(?::\w+)?\](.*?)\[\/code(?::\w+)?\]/si'           => "<div class=\"bb-code\">\\1</div>",  
                  '/(?<!\\\\)\[php(?::\w+)?\](.*?)\[\/php(?::\w+)?\]/si'             => "<div class=\"bb-php\">\\1</div>",  
                  // [email]  
                  '/(?<!\\\\)\[email(?::\w+)?\](.*?)\[\/email(?::\w+)?\]/si'         => "<a href=\"mailto:\\1\" class=\"bb-email\">\\1</a>",  
                  '/(?<!\\\\)\[email(?::\w+)?=(.*?)\](.*?)\[\/email(?::\w+)?\]/si'   => "<a href=\"mailto:\\1\" class=\"bb-email\">\\2</a>",  
                  // [url]  
                  '/(?<!\\\\)\[url(?::\w+)?\]www\.(.*?)\[\/url(?::\w+)?\]/si'        => "<a href=\"http://www.\\1\" target=\"_blank\" class=\"bb-url\">\\1</a>",  
                  '/(?<!\\\\)\[url(?::\w+)?\](.*?)\[\/url(?::\w+)?\]/si'             => "<a href=\"\\1\" target=\"_blank\" class=\"bb-url\">\\1</a>",  
                  '/(?<!\\\\)\[url(?::\w+)?=(.*?)?\](.*?)\[\/url(?::\w+)?\]/si'      => "<a href=\"\\1\" target=\"_blank\" class=\"bb-url\">\\2</a>",  
                  // [img]  
                  '/(?<!\\\\)\[img(?::\w+)?\](.*?)\[\/img(?::\w+)?\]/si'             => "<img src=\"\\1\" alt=\"\\1\" class=\"bb-image\" />",  
                  '/(?<!\\\\)\[img(?::\w+)?=(.*?)x(.*?)\](.*?)\[\/img(?::\w+)?\]/si' => "<img width=\"\\1\" height=\"\\2\" src=\"\\3\" alt=\"\\3\" class=\"bb-image\" />",  
                  // [quote]  
                  '/(?<!\\\\)\[quote(?::\w+)?\](.*?)\[\/quote(?::\w+)?\]/si'         => "<div>Quote:<div class=\"bb-quote\">\\1</div></div>",  
                  '/(?<!\\\\)\[quote(?::\w+)?=(?:&quot;|"|\')?(.*?)["\']?(?:&quot;|"|\')?\](.*?)\[\/quote\]/si'   => "<div>Quote \\1:<div class=\"bb-quote\">\\2</div></div>",  
                  // [list]  
                  '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[\*(?::\w+)?\](.*?)(?=(?:\s*<br\s*\/?>\s*)?\[\*|(?:\s*<br\s*\/?>\s*)?\[\/?list)/si' => "\n<li class=\"bb-listitem\">\\1</li>",  
                  '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[\/list(:(?!u|o)\w+)?\](?:<br\s*\/?>)?/si'    => "\n</ul>",  
                  '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[\/list:u(:\w+)?\](?:<br\s*\/?>)?/si'         => "\n</ul>",  
                  '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[\/list:o(:\w+)?\](?:<br\s*\/?>)?/si'         => "\n</ol>",  
                  '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list(:(?!u|o)\w+)?\]\s*(?:<br\s*\/?>)?/si'   => "\n<ul class=\"bb-list-unordered\">",  
                  '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list:u(:\w+)?\]\s*(?:<br\s*\/?>)?/si'        => "\n<ul class=\"bb-list-unordered\">",  
                  '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list:o(:\w+)?\]\s*(?:<br\s*\/?>)?/si'        => "\n<ol class=\"bb-list-ordered\">",  
                  '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list(?::o)?(:\w+)?=1\]\s*(?:<br\s*\/?>)?/si' => "\n<ol class=\"bb-list-ordered,bb-list-ordered-d\">",  
                  '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list(?::o)?(:\w+)?=i\]\s*(?:<br\s*\/?>)?/s'  => "\n<ol class=\"bb-list-ordered,bb-list-ordered-lr\">",  
                  '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list(?::o)?(:\w+)?=I\]\s*(?:<br\s*\/?>)?/s'  => "\n<ol class=\"bb-list-ordered,bb-list-ordered-ur\">",  
                  '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list(?::o)?(:\w+)?=a\]\s*(?:<br\s*\/?>)?/s'  => "\n<ol class=\"bb-list-ordered,bb-list-ordered-la\">",  
                  '/(?<!\\\\)(?:\s*<br\s*\/?>\s*)?\[list(?::o)?(:\w+)?=A\]\s*(?:<br\s*\/?>)?/s'  => "\n<ol class=\"bb-list-ordered,bb-list-ordered-ua\">",  
                  // escaped tags like \[b], \[color], \[url], ...  
                  '/\\\\(\[\/?\w+(?::\w+)*\])/'                                      => "\\1"  
          
          );  
          $message = preg_replace(array_keys($preg), array_values($preg), $message);  
          return $message;  
        }  
          
        echo $message;  
        ?>  
        </body>  
        </html>  
        
        
      2. Hallo Twilo,

        gibt es ne Möglichkeit die Klasse (http://www.christian-seiler.de/projekte/php/bbcode/)von von Smarty aus aufzurufen?

        sicher. Lege im plugins-Verzeichnis von Smarty eine Datei namens modifier.bbcode.php an, die eine Funktion namens smarty_modifier_bbcode enthält. Diese Funktion musst du dann so schreiben, dass sie den übergebenen Text durch die BBCode-Klasse jagt und das Ergebnis zurückgibt (wie die modifier-Funktionen aussehen müssen, kannst du dir ja an den anderen anschauen) - dann kannst du das ganze einfach über {$var|bbcode} aufrufen.

        Grüße aus Nürnberg
        Tobias

    2. Hallo Jeena und ihr anderen!

      Das brauchst du doch gar nicht, Christian Seiler hat doch eine solch wunderbare BBCode PHP Klasse geschrieben und ich glaube irgendwie dass er an alles gedacht hat, ich konnte nämlich bis jetzt alles umsetzen was ich mir überhaupt ausgedacht habe - und das in validen HTML code! http://www.christian-seiler.de/projekte/php/bbcode/

      Das kann ich nur bestätigen ;)

      Und auch bei Jeenas restlichen Vorschlägen muß ich ihm zustimmen, das gespane ist nicht sehr schön.

      MfG
      Götz

      --
      Losung für Sonntag, 10. Juli 2005
      Als die Zeit herbeikam, dass David sterben sollte, gebot er seinem Sohn Salomo und sprach: Ich gehe hin den Weg aller Welt. So sei getrost und diene dem Herrn, deinem Gott. (1. Könige 2,1-3)
      Jesus spricht: Der Größte unter euch soll sein wie der Jüngste und der Vornehmste wie ein Diener. (Lukas 22,26)
      (Losungslink)