Pergunta

Alguém tem usado uma boa implementação Java de BBCode? Estou olhando para

  1. javabbcode : nada a ver
  2. kefir-bb : Listado como alfa
  3. analisador BBcode no código-fonte JBoss.

Existem opções melhores?

Foi útil?

Solução

A versão atual do KefirBB 0,6 não é listado como beta mais. I encontrar o analisador KefirBB muito fácil de configurar e estender com as minhas próprias tags:

kefir-bb.sourceforge.net

(Este é o melhor BBCode analisador que eu encontrei até agora)

Eu também encontrei este código em fyhao .com , mas não protegê-lo contra as tags aninhadas incorretamente (portanto, não adequado para a análise input entrou usuário):

    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 faz parte do projeto de código aberto:. JavaBB

Outras dicas

Eu acredito que a melhor opção é usar wiki markup. Você pode tentar o pacote Mylyn Wikitext que eu uso atualmente com grande sucesso para o nosso sistema de documentação.

No entanto, isso não é uma resposta para o seu problema, se o que você tentar é para analisar algum texto fórum você já tem automaticamente: -I

Eu acredito que a melhor opção é a utilização wiki markup

A menos que você tem usuários não técnicos que estão acostumados a bbcode e não está muito interessado em aprender outro formato arcano marcação.

Eu tenho usado com sucesso expressões regulares no passado para virar entre html e bbcode. Definir uma lista de expressões que cobrem cada tag, e pré-compilar os padrões para cada um. Em seguida, de forma iterativa transformar a string com cada expressão. Funciona nos dois sentidos. O desempenho é realmente muito bom, e você pode adaptar-se às suas próprias dialeto / extensões facilmente.

Desvantagem é que regex nem sempre são fáceis de trabalhar fora.

Outra opção Java para BBCode analisar e transformando a HTML é Transformer Prime.

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

Nós construímos isso por alguns usos específicos, mas tentei mantê-lo o suficiente genérico para consumo geral. Eu tenho um exemplo básico de como colocá-lo em conjunto na página de destino no GitHub.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top