Pregunta

¿Alguien ha utilizado una buena implementación en Java de código BBCode? Estoy buscando en

  1. javabbcode : nada que ver
  2. kefir-bb : Listado como alfa
  3. analizador Bbcode en el código fuente de JBoss.

¿Hay opciones mejores?

¿Fue útil?

Solución

La versión actual de 0,6 KefirBB no aparece como beta más. Me parece que el analizador KefirBB muy fácil de configurar y ampliar con mis propias etiquetas:

kefir-bb.sourceforge.net

(Este es el mejor analizador BBCode que he encontrado hasta ahora)

También encontré este código en fyhao .com , pero le protege contra las etiquetas mal anidadas (por lo tanto no es adecuado para el análisis usuario ha introducido entrada):

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

Por cierto javaBBcode es parte del proyecto de código abierto:. JavaBB

Otros consejos

Creo que la mejor opción es utilizar las marcas wiki. Puede probar el paquete de Mylyn Wikitext que actualmente utilizo con gran éxito para nuestro sistema de documentación.

Sin embargo, esto no es una respuesta a su problema, si lo que se intenta analizar un texto foro ya tiene automáticamente: -I

  

Creo que la mejor opción es utilizar   el código wiki

A menos que tenga los usuarios no técnicos que están acostumbrados a los BBCode y no son muy interesado en el aprendizaje de otro formato de marcado arcano.

He utilizado con éxito expresiones regulares en el pasado para alternar entre HTML y BBCode. Definir una lista de expresiones que cubren cada etiqueta, y precompilar los patrones para cada uno. A continuación, de forma iterativa transformar la cadena con cada expresión. Funciona en ambos sentidos. El rendimiento es bastante bueno, y se puede adaptar a sus propios dialectos / extensiones fácilmente.

Lo malo es que la expresión regular no siempre son fáciles de trabajar.

Otra opción Java para BBCode análisis y transformando a HTML se Transformer Prime.

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

Construimos este para algunos usos específicos, pero intentado que sea lo suficientemente genérico como para el consumo general. Tengo un ejemplo básico de cómo poner juntos en la página de destino en GitHub.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top