Domanda

Qualcuno ha usato una buona implementazione Java di BBCode? Sto cercando a

  1. javabbcode : niente da vedere
  2. kefir-bb : Annunciato come alpha
  3. BBcode parser nel codice sorgente JBoss.

Ci sono alternative migliori?

È stato utile?

Soluzione

La versione corrente di KefirBB 0.6 non è elencato come versione beta più. Trovo il parser KefirBB molto facile da configurare ed estendere con i miei tag:

kefir-bb.sourceforge.net

(Questo è il miglior parser BBCode ho trovato finora)

Ho trovato anche questo codice fyhao .com , ma lo fa si proteggere i tag correttamente annidati (quindi non adatto per l'analisi di utente è entrato in ingresso):

    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;
    }

A proposito javaBBcode fa parte del progetto opensource:. JavaBB

Altri suggerimenti

Credo che una scelta migliore è quella di utilizzare marcatori wiki. Si può provare il pacchetto Mylyn Wikitext che ho attualmente in uso con grande successo per il nostro sistema di documentazione.

Tuttavia, questa non è una risposta al tuo problema, se ciò che si prova è di analizzare un testo forum hai già automaticamente: -I

  

Credo che una scelta migliore è quella di utilizzare   wiki markup

A meno che non si dispone di utenti non tecnici che sono abituati a bbcode e non sono terribilmente interessati ad imparare un altro formato di markup arcano.

ho usato con successo le espressioni regolari in passato per capovolgere tra html e bbcode. Definire un elenco di espressioni che coprono ogni tag, e precompilare i modelli per ciascuno di essi. Poi iterativo trasformare la stringa con ogni espressione. Funziona in due modi. Le prestazioni sono in realtà piuttosto bene, ed è possibile adattare alle proprie dialettali / estensioni facilmente.

L'unico lato negativo è che regex non sono sempre facili da risolvere.

Un'altra opzione Java per BBCode analisi e trasformando in HTML è Transformer Prime.

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

Abbiamo costruito questa per alcuni usi specifici, ma ho cercato di tenerlo sufficientemente generico per il consumo generale. Ho un esempio di base di come mettere insieme sulla pagina di destinazione su GitHub.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top