سؤال

هل استخدم أي شخص تطبيق Java جيدًا لـ BBCode؟أنا أبحث في

  1. javabbcode :لا شيء للمشاهدة
  2. الكفير ب :مدرج كألفا
  3. محلل BBcode في كود مصدر JBoss.

هل هناك أي خيارات أفضل؟

هل كانت مفيدة؟

المحلول

الإصدار الحالي من KefirBB 0.6 لم يعد مدرجًا في النسخة التجريبية بعد الآن.أجد أن محلل KefirBB سهل جدًا في التهيئة والتوسيع باستخدام العلامات الخاصة بي:

الكفير-bb.sourceforge.net

(هذا الأفضل كود بي بي سي المحلل اللغوي الذي وجدته حتى الآن)

لقد وجدت أيضًا هذا الرمز في 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;
    }

راجع للشغل javaBBcode هو جزء من مشروع مفتوح المصدر: جافا بي بي.

نصائح أخرى

أعتقد أن الخيار الأفضل هو استخدام علامة الويكي.يمكنك تجربة حزمة Mylyn Wikitext التي أستخدمها حاليًا بنجاح كبير لنظام التوثيق الخاص بنا.

ومع ذلك، هذا ليس حلاً لمشكلتك، إذا كان ما تحاول تحليله هو تحليل بعض نصوص المنتدى الموجودة لديك تلقائيًا :-أنا

أعتقد أن الخيار الأفضل هو استخدام علامة الويكي

ما لم يكن لديك مستخدمين غير تقنيين معتادين على برمجة BBcode وليسوا مهتمين جدًا بتعلم تنسيق ترميز غامض آخر.

لقد استخدمت التعبيرات العادية بنجاح في الماضي للتنقل بين html وbbcode.حدد قائمة بالتعبيرات التي تغطي كل علامة، وقم بتجميع الأنماط مسبقًا لكل منها.ثم قم بتحويل السلسلة بشكل متكرر مع كل تعبير.يعمل في كلا الاتجاهين.الأداء جيد جدًا في الواقع، ويمكنك التكيف مع لهجتك/امتداداتك بسهولة.

الجانب السلبي هو أن التعبير العادي ليس دائمًا سهل التنفيذ.

خيار Java آخر لتحليل BBCode والتحويل إلى HTML هو Prime Transformer.

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

لقد بنينا هذا لبعض الاستخدامات المحددة ولكننا حاولنا أن نبقيه عامًا بما يكفي للاستهلاك العام.لدي مثال أساسي لكيفية تجميعها معًا على الصفحة المقصودة على GitHub.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top