LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 924|回复: 3

咱们论坛的文章编辑器是怎么做的,我也想做一个

[复制链接]
发表于 2004-11-7 22:07:21 | 显示全部楼层 |阅读模式
我现在正在用JSP做网页,也想做一个文章编辑器。我在网上也找过一些,但是那些都在文章中嵌入了好多的文章控制符,比如像从word中直接拷过来,就会把word中的一些样式控制字符拷过来(在数据库中可以看到)。这样的文章在网上浏览时很不美观。
   我想问一下,咱们论坛上的文章编辑器是怎么做的,比如说:怎么在文章中加一条地址。是使用的javascript吗?
发表于 2004-11-7 22:58:30 | 显示全部楼层
这是我以前借鉴别人的代码后,写的一个,兄弟也许可以参考一下

[PHP]  

package com.tony;

public class HtmlFilter{

    public static final String convertUBB(String input) {

        if (input == null){ // || input.length() == 0 || (input.indexOf("[", 0) < 0 && input.indexOf("]", 0) < 0)) {
            input = "";
            return input;
        } else {

            input = HtmlFilter.escapeHTMLTag(input);
            input = HtmlFilter.replace(input, "", "<b>");
            input = HtmlFilter.replace(input, "
", "</b>");
            input = HtmlFilter.replace(input, "", "<i>");
            input = HtmlFilter.replace(input, "
", "</i>");
            input = HtmlFilter.replace(input, "", "<u>");
            input = HtmlFilter.replace(input, "
", "</u>");            
            input = HtmlFilter.replace(input, "  ", "  ");
            input = HtmlFilter.replace(input, "\n", "<br>");

            input = HtmlFilter.convertSpecialTagSingle(
                    input,
                    "", "",
                    "<a href=\"", "\">", "</a>",
                    "[/");
                    
            input = HtmlFilter.convertSpecialTagSingle(
                    input,
                    "[mail]", "[/mail]",
                    "<a href=\"mailto:", "\">", "</a>",
                    "[/");
            input =
                HtmlFilter.convertSpecialTagSingle(
                    input,
                    "",
                    "<img src=\"", "\">", "</img>",
                    "[/");
            input =
                HtmlFilter.convertSpecialTagSingle(
                    input,
                    "[music]", "[/music]",
                    "<embed src=\"","\" autostart=\"true\" loop=\"true\" width=\"1\" height=\"1\">","</embed>",

                    "[/");

                    
            input = HtmlFilter.convertSpecialTag(
                    input,
                    "[center", "",
                    "<div align=\"center", "\">", "</div>",
                    "]");

            input = HtmlFilter.convertSpecialTag(
                    input,
                    "[url=", "[/url]",
                    "<a href=\"", "\">", "</a>",
                    "]");                    
                    
            input =
                HtmlFilter.convertSpecialTag(
                    input,
                    "[font color=", "",
                    "<font color=\"", "\">", "</font>",
                    "]");
            input =
                HtmlFilter.convertSpecialTag(
                    input,
                    "[color=", "",
                    "<font color=\"", "\">", "</font>",
                    "]");
                    
                    
            input =
                HtmlFilter.convertSpecialTag(
                    input,
                    "[font size=","",
                    "<font size=\"","\">", "</font>",
                    "]");
            input =
                HtmlFilter.convertSpecialTag(
                    input,
                    "[size=","",
                    "<font size=\"","\">", "</font>",
                    "]");
                    
            input =
                HtmlFilter.convertSpecialTag(
                    input,
                    "[mail=", "[/mail]",
                    "<a href=\"mailto:", "\">", "</a>",
                    "]");
            input =
                HtmlFilter.convertSpecialTag(
                    input,
                    "[img=", "[/img]",
                    "<img src=\"", "\">", "</img>",
                    "]");
                    
            input = HtmlFilter.convertSpecialTag(
                    input,
                    "[fly", "[/fly]",
                    "<marquee width=90% behavior=alternate scrollamount=3", ">", "</marquee>",
                    "]");
            input = HtmlFilter.convertSpecialTag(
                    input,
                    "[move", "[/move]",
                    "<marquee width=90% behavior=alternate scrollamount=3", ">", "</marquee>",
                    "]");
            input = HtmlFilter.convertSpecialTag(
                    input,
                    "[music=", "[/music]",
                    "<embed src=\"","\" autostart=\"true\" loop=\"true\" width=\"1\" height=\"1\">","</embed>",
                    "]");
                    

                    
            return input;
        }
    }


    public static final String escapeHTMLTag(String input) {

        if(input == null){
                input = "";
                return input;
        }
        input = replace(input.trim(),"&","&amp;");
    input = replace(input.trim(),"<","&lt;");
        input = replace(input.trim(),">","&gt;");
        input = replace(input.trim(),"\t","    ");
        input = replace(input.trim(),"\r\n","\n");
        input = replace(input.trim(),"\n","<br>");
        input = replace(input.trim(),"  "," &nbsp;");
        input = replace(input.trim(),"'","&#39;");
        input = replace(input.trim(),"\\","&#92;");
        return input;
        }


    public static final String replace(
        String input,
        String oldString,
        String newString) {

        if (input == null|| input.length() == 0|| input.indexOf(oldString, 0) < 0) {
            return input;
        } else {

            int i = 0;
            int j = 0;
            int oldLength = oldString.length();
            StringBuffer buffer = new StringBuffer();
            while ((i = input.indexOf(oldString, i)) >= 0) {
                buffer.append(input.substring(j, i)).append(newString);
                j = (i += oldLength);
            }
            input = buffer.append(input.substring(j)).toString();
            buffer = null;
            return input;
        }
    }


    private static final String convertSpecialTag(
        String input,
        String ubbTagPre,
        String ubbTagEnd,
        String htmlTagPrefix,
        String htmlTagSuffix,
        String htmlTagEnd,
        String interval) {

        if (input == null || input.length() == 0)
            return input;
        int i = 0;
        int j = 0;
        StringBuffer htmlBuffer = null;
        StringBuffer ubbBuffer = null;

        while ((i = input.indexOf(ubbTagPre, 0)) >= 0
            && (j = input.indexOf(interval, i)) >= 0) {
            htmlBuffer = new StringBuffer(htmlTagPrefix);
            ubbBuffer = new StringBuffer(ubbTagPre);
            input =
                replace(
                    replace(
                        input,
                        ubbBuffer
                            .append(input.substring(i + ubbTagPre.length(), j))
                            .append(interval)
                            .toString(),
                        htmlBuffer
                            .append(
                                input.substring(
                                    input.indexOf(ubbTagPre, 0)
                                        + ubbTagPre.length(),
                                    input.indexOf(interval, i)))
                            .append(htmlTagSuffix)
                            .toString()),
                    ubbTagEnd,
                    htmlTagEnd);
            ubbBuffer = null;
            htmlBuffer = null;
        }
        return input;
    }
         
    private static final String convertSpecialTagSingle(
        String input,
        String ubbTagPre,
        String ubbTagEnd,
        String htmlTagPrefix,
        String htmlTagSuffix,
        String htmlTagEnd,
        String interval) {

        if (input == null || input.length() == 0)
            return input;
        int i = 0;
        int j = 0;
        StringBuffer htmlBuffer = null;
        StringBuffer ubbBuffer = null;


        while ((i = input.indexOf(ubbTagPre, 0)) >= 0
            && (j = input.indexOf(interval, i)) >= 0) {
            htmlBuffer = new StringBuffer(htmlTagPrefix);
            ubbBuffer = new StringBuffer(ubbTagPre);
            input =
                replace(
                    replace(
                        input,
                        ubbBuffer
                            .toString(),
                        htmlBuffer
                            .append(
                                input.substring(
                                    input.indexOf(ubbTagPre, 0)
                                        + ubbTagPre.length(),
                                    input.indexOf(interval, i)))
                            .append(htmlTagSuffix)
                            .toString()),
                    ubbTagEnd,
                    htmlTagEnd);
            ubbBuffer = null;
            htmlBuffer = null;
        }
/*        
        if (ubbTagPre == "[img]"){
                StringBuffer input2 = new StringBuffer(" ");
                          input2.append(input.substring(0,input.indexOf("\">"))).append("1234")
                                  .append(htmlTagEnd);
                          input = input2.toString();
        }
*/
        return input;
    }
      
}

  [/PHP]
 楼主| 发表于 2004-11-8 23:11:21 | 显示全部楼层
谢谢版主,我先自己试试
发表于 2004-11-9 20:36:14 | 显示全部楼层
vbb
discuz
phpbb等好多php的论坛都可下载

楼主可以试试看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表