문제

BBCode의 좋은 Java 구현을 사용한 사람이 있습니까? 나는보고있다

  1. javabbcode : 볼 것이 없습니다
  2. Kefir-BB : 알파로 등재되었습니다
  3. Jboss 소스 코드의 BBCode 파서.

더 나은 옵션이 있습니까?

도움이 되었습니까?

해결책

Kefirbb 0.6의 현재 버전은 더 이상 베타로 나열되지 않습니다. KefirbB 파서는 내 자신의 태그로 구성하고 확장하기가 매우 쉽습니다.

kefir-bb.sourceforge.net

(이게 최선이다 bbcode 지금까지 찾은 파서)

또한이 코드를 찾았습니다 fyhao.com, 그러나 그것은 잘못된 중첩 태그로부터 당신을 보호합니다 (따라서 입력 한 입력 사용자를 구문 분석하는 데 적합하지 않음) :

    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는 OpenSource 프로젝트의 일부입니다. Javabb.

다른 팁

더 나은 선택은 Wiki Markup을 사용하는 것입니다. 현재 문서 시스템에 큰 성공을 거두고있는 Mylyn Wikitext 패키지를 사용해 볼 수 있습니다.

그러나 이것은 당신의 문제에 대한 답이 아닙니다. 당신이 시도하는 것이 당신이 이미 자동으로 가지고있는 포럼 텍스트를 구문 분석하는 경우 : -i.

더 나은 선택은 Wiki Markup을 사용하는 것입니다.

BBCode에 익숙하고 다른 비전 마크 업 형식을 배우는 데 크게 관심이없는 기술 사용자가없는 한.

과거에 정규 표현식을 성공적으로 사용하여 HTML과 BBCode 사이를 뒤집습니다. 각 태그를 다루는 표현 목록을 정의하고 각 태그의 패턴을 사전 컴파일하십시오. 그런 다음 각 표현식으로 문자열을 반복적으로 변환합니다. 두 가지 방식으로 작동합니다. 성능은 실제로 꽤 좋으며 자신의 방언/확장에 쉽게 적응할 수 있습니다.

단점은 Regex가 항상 운동하기에 간단한 것은 아니라는 것입니다.

BBCode 구문 분석 및 HTML로 변환하는 또 다른 Java 옵션은 Prime Transformer입니다.

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

우리는 특정 용도로 이것을 구축했지만 일반적인 소비를 위해 충분히 일반적인 상태로 유지하려고 노력했습니다. Github의 방문 페이지에 모이는 방법에 대한 기본 예가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top