BBCode mit Syntaxhighlightning

7. November 2007 @ 09:25 | PHP

BBCode's ermöglichen das einfache Formatieren von Textpassagen in Blogs und Foren.

Mit der freien Library GeSHi kann zusätzlich mit wenigen Zeilen Code ein Syntaxhighlightning für Programmcode-Schnippsel eingebaut werden.

Implementierung

Zuerst muss GeSHi heruntergeladen, entpackt und an einem passenden Ort im eigenen Webspace platziert werden.
Über die Callback-Funktionen welche BBCode bietet, wird die Library anschliessend in den eigenen Blog oder ins eigene Forum eingebunden.

$bbcode->addCode ('code', 'usecontent?', 'do_bbcode_code', array('usecontent_param' => 'default'), 'code', array('listitem', 'block', 'inline', 'link'), array());

Schliesslich wird die Callback-Methode "do_bbcode_code" implementiert.
Bei mir sieht das etwa wie folgt aus:

function do_bbcode_code($action, $attributes, $content, $params, $node_object) {
    if($action == 'validate') return true;
   
    // Standard-Sprache oder wurde eine explizite angegeben?
    if(!isset($attributes['default'])) $language = 'java5';
    else $language = $attributes['default'];

    if(!isset($geshi)) {
        require_once('geshi/geshi.php');
        $geshi = new GeSHi($content, $language);
    }
       
    return $geshi->parse_code();
}

Die Callback-Methode ist so gestaltet, dass direkt im code-Tag die Programmiersprache mitgegeben werden kann. Ist keine Sprache angegeben, wird automatisch angenommen, dass es sich um Java-Code handelt.

BBCode Beispiele

[code]System.out.println("Java Beispiel");[/ code]
[code=java5]System.out.println("Explizites Java Beispiel");[/ code]
[code=php]System.out.println("Explizites PHP Beispiel");[/ code]

Weitere Infos

In den Dokumentationen von BBCode und GeSHi gibt es weitere Informationen zu Einstellungsmöglichkeiten der Libraries. GeSHi zum Beispiel bietet noch zig weitere Optionen zur Formatierung des Quellcodes.



Es wurden noch keine Kommentare geschrieben.
Hinweis Ihre E-Mail-Adresse wird nicht veröffentlicht und ist nur dem Betreiber von msites.net ersichtlich. Das Feld für die Adresse Ihrer Internetseite sowie der Titel sind optional.






Bei Antworten per E-Mail benachrichtigen

Diesem Artikel sind keine Attachments angehängt.
Es wurden noch keine Trackbacks zu diesem Artikel gemeldet.