Question

Quelqu'un at-il utilisé une bonne implémentation Java de BBCode? Je cherche à

  1. javabbcode : rien à voir
  2. kéfir-bb : Classé comme alpha
  3. analyseur BBcode dans le code source JBoss.

Y a-t-il des meilleures options?

Était-ce utile?

La solution

La version actuelle de 0,6 KefirBB ne figure pas en tant que bêta plus. Je trouve l'analyseur KefirBB très facile à configurer et d'étendre mes propres tags:

kefir-bb.sourceforge.net

(C'est le meilleur BBCode analyseur que j'ai trouvé à ce jour)

J'ai aussi trouvé ce code fyhao .com , mais il ne vous protège contre les balises incorrectement imbriquées (donc pas adapté à l'analyse syntaxique est entré dans l'entrée utilisateur):

    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 fait partie du projet opensource. JavaBB

Autres conseils

Je crois qu'une meilleure option est d'utiliser les balises wiki. Vous pouvez essayer le paquet Mylyn Wikitext que j'utilise actuellement un grand succès pour notre système de documentation.

Cependant, ce n'est pas une réponse à votre problème, si ce que vous essayez est d'analyser un texte du forum, vous avez déjà automatiquement: -I

  

Je crois qu'une meilleure option est d'utiliser   balisage wiki

Sauf si vous avez des utilisateurs non techniques qui sont utilisés pour bbcode et ne sont pas très intéressés à en apprendre un autre format de balisage Arcane.

Je l'ai utilisé avec succès des expressions régulières dans le passé pour faire basculer entre html et bbcode. Définir une liste d'expressions qui couvrent chaque étiquette, et précompiler les modèles pour chacun d'eux. transformer ensuite itérativement la chaîne avec chaque expression. Les deux sens. La performance est en fait assez bonne, et vous pouvez adapter à votre propre dialecte / extensions facilement.

côté incliné est que regex ne sont pas toujours faciles à travailler.

Une autre option Java pour l'analyse syntaxique et BBCode HTML est en train de transformer Transformer Prime.

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

Nous avons construit cela pour certaines utilisations spécifiques, mais essayé de garder assez générique pour la consommation générale. J'ai un exemple de base de la façon de le mettre ensemble sur la page de destination sur GitHub.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top