Frage

Hat jemand eine gute Java-Implementierung von BBCode verwendet? Ich bin auf der Suche

  1. javabbcode : nichts sehen
  2. Kefir-bb : Aufgeführt als alpha
  3. BBcode Parser in JBoss-Quellcode.

Gibt es bessere Möglichkeiten?

War es hilfreich?

Lösung

Die aktuelle Version von KefirBB 0.6 wird nicht mehr als Beta aufgeführt. Ich finde die KefirBB Parser sehr einfach zu konfigurieren und erweitern mit eigenen Tags:

kefir-bb.sourceforge.net

(Dies ist die beste BBCode Parser ich bisher gefunden habe)

Ich fand auch diesen Code unter fyhao .com , aber es hat Sie gegen falsch verschachtelte Tags schützen (also nicht geeignet für die Analyse von Benutzereingaben eingegeben):

    public static String bbcode(String text) {
        String html = text;

        Map<String,String> bbMap = new HashMap<String , String>();

        bbMap.put("(\r\n|\r|\n|\n\r)", "<br/>");
        bbMap.put("\\[b\\](.+?)\\[/b\\]", "<strong>$1</strong>");
        bbMap.put("\\[i\\](.+?)\\[/i\\]", "<span style='font-style:italic;'>$1</span>");
        bbMap.put("\\[u\\](.+?)\\[/u\\]", "<span style='text-decoration:underline;'>$1</span>");
        bbMap.put("\\[h1\\](.+?)\\[/h1\\]", "<h1>$1</h1>");
        bbMap.put("\\[h2\\](.+?)\\[/h2\\]", "<h2>$1</h2>");
        bbMap.put("\\[h3\\](.+?)\\[/h3\\]", "<h3>$1</h3>");
        bbMap.put("\\[h4\\](.+?)\\[/h4\\]", "<h4>$1</h4>");
        bbMap.put("\\[h5\\](.+?)\\[/h5\\]", "<h5>$1</h5>");
        bbMap.put("\\[h6\\](.+?)\\[/h6\\]", "<h6>$1</h6>");
        bbMap.put("\\[quote\\](.+?)\\[/quote\\]", "<blockquote>$1</blockquote>");
        bbMap.put("\\[p\\](.+?)\\[/p\\]", "<p>$1</p>");
        bbMap.put("\\[p=(.+?),(.+?)\\](.+?)\\[/p\\]", "<p style='text-indent:$1px;line-height:$2%;'>$3</p>");
        bbMap.put("\\[center\\](.+?)\\[/center\\]", "<div align='center'>$1");
        bbMap.put("\\[align=(.+?)\\](.+?)\\[/align\\]", "<div align='$1'>$2");
        bbMap.put("\\[color=(.+?)\\](.+?)\\[/color\\]", "<span style='color:$1;'>$2</span>");
        bbMap.put("\\[size=(.+?)\\](.+?)\\[/size\\]", "<span style='font-size:$1;'>$2</span>");
        bbMap.put("\\[img\\](.+?)\\[/img\\]", "<img src='$1' />");
        bbMap.put("\\[img=(.+?),(.+?)\\](.+?)\\[/img\\]", "<img width='$1' height='$2' src='$3' />");
        bbMap.put("\\[email\\](.+?)\\[/email\\]", "<a href='mailto:$1'>$1</a>");
        bbMap.put("\\[email=(.+?)\\](.+?)\\[/email\\]", "<a href='mailto:$1'>$2</a>");
        bbMap.put("\\[url\\](.+?)\\[/url\\]", "<a href='$1'>$1</a>");
        bbMap.put("\\[url=(.+?)\\](.+?)\\[/url\\]", "<a href='$1'>$2</a>");
        bbMap.put("\\[youtube\\](.+?)\\[/youtube\\]", "<object width='640' height='380'><param name='movie' value='http://www.youtube.com/v/$1'></param><embed src='http://www.youtube.com/v/$1' type='application/x-shockwave-flash' width='640' height='380'></embed></object>");
        bbMap.put("\\[video\\](.+?)\\[/video\\]", "<video src='$1' />");

        for (Map.Entry entry: bbMap.entrySet()) {
            html = html.replaceAll(entry.getKey().toString(), entry.getValue().toString());
        }

        return html;
    }

BTW javaBBcode ist Teil der Open-Source-Projekt. JavaBB

Andere Tipps

Ich glaube, eine bessere Option ist Wiki-Markup zu verwenden. Sie können die Mylyn Wikitext Paket versuchen, die ich zur Zeit mit großem Erfolg für unser Dokumentationssystem verwenden.

Dies ist jedoch keine Antwort auf Ihr Problem, wenn das, was Sie versuchen, ist etwas Forum Text zu analysieren, haben Sie bereits automatisch: -I

  

Ich glaube, eine bessere Option ist, zu verwenden   Wiki-Markup

Es sei denn, Sie haben nicht technischen Anwender, der bbcode verwendet werden und ist nicht sehr daran interessiert, ein anderes obskures Markup-Format zu lernen.

Ich habe erfolgreich reguläre Ausdrücke in der Vergangenheit leicht zu schlagen zwischen html und bbcode verwendet. Definieren Sie eine Liste von Ausdrücken, die jeden Tag decken, und vorkompilieren die Muster für jeden. Dann iterativ die Zeichenfolge mit jedem Ausdruck transformiert. Funktioniert in beiden Richtungen. Die Leistung ist eigentlich ziemlich gut, und man kann leicht zu Ihren eigenen Dialekt / Erweiterungen anzupassen.

Nachteil ist, dass regex ist nicht immer einfach zu erarbeiten.

Eine weitere Java-Option für BBCode Parsing und HTML Transformation wird Transformer Prime.

https://github.com/inversoft/prime-transformer

Wir bauten diese für einige spezifische Anwendungen aber versuchte es allgemein genug für den allgemeinen Verbrauch zu halten. Ich habe ein einfaches Beispiel bekommt, wie es auf der Zielseite, um gemeinsam auf GitHub.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top