asp常用函数集合,非常不错以后研究第1/4页

544 查看

<%
function loadtempletfile(byval path)
    on error resume next
    dim objstream
    set objstream = server.createobject("adodb.stream")
    with objstream
        .type = 2
        .mode = 3
        .open
        .loadfromfile server.mappath(path)
        if err.number <> 0 then
            err.clear
             response.write("预加载的模板[" & path & "]不存在!")
            response.end()
        end if
        .charset = "" & chrset & ""
        .position = 2
            loadtempletfile = .readtext
        .close
    end with
    set objstream = nothing
end function

function movefiles(sFolder,dFolder)
    on error resume next
    dim fso
    set fso = server.createobject("scripting.filesystemobject")
    if fso.folderexists(server.mappath(sFolder)) and fso.folderexists(server.mappath(dFolder)) then
        fso.copyfolder server.mappath(sFolder),server.mappath(dFolder)
        movefiles = true
    else
        movefiles = false
        set fso = nothing
        call alertbox("系统没有找到指定的路径[" & sFolder & "]!",2)
    end if
    set fso = nothing
end function

function renamefolder(sFolder,dFolder)
    on error resume next
    dim fso
    set fso = server.createobject("scripting.filesystemobject")
    if fso.folderexists(server.mappath(sFolder)) then
        fso.movefolder server.mappath(sFolder),server.mappath(dFolder)
        renamefolder = true
    else
        renamefolder = false
        set fso = nothing
        call alertbox("系统没有找到指定的路径[" & sFolder & "]!",2)
    end if
    set fso = nothing
end function

function checkfolder(sPATH)
    on error resume next
    dim fso
    set fso = server.createobject("scripting.filesystemobject")
    if fso.folderexists(server.mappath(sPATH)) then
        checkfolder = true
    else
        checkfolder = false
    end if
    set fso = nothing
end function

function checkfile(sPATH)
    on error resume next
    dim fso
    set fso = server.createobject("scripting.filesystemobject")
    if fso.fileexists(server.mappath(sPATH)) then
        checkfile = true
    else
        checkfile = false
    end if
    set fso = nothing
end function

function createdir(sPATH)
    dim fso,pathArr,i,path_Level,pathTmp,cPATH
    on error resume next
    sPATH = replace(sPATH,"\","/")
    set fso = server.createobject("scripting.filesystemobject")
        pathArr = split(sPATH,"/")
        path_Level = ubound(pathArr)
        for i = 0 to path_Level
            if i = 0 then pathTmp = pathArr(0) & "/" else pathTmp = pathTmp&pathArr(i) & "/"
            cPATH = left(pathTmp,len(pathTmp)-1)
            if not fso.folderexists(cPATH) then fso.createfolder(cPATH)
        next
    set fso = nothing
    if err.number <> 0 then
        err.clear
        createdir = false
    else
        createdir = true
    end if
end function

function delclassfolder(sPATH)
    on error resume next
    dim fso
    set fso = server.createobject("scripting.filesystemobject")
    if fso.folderexists(server.mappath(sPATH)) then
        fso.deletefolder(server.mappath(sPATH))
    end if
    set fso = nothing
end function

function delnewsfile(sPATH,filename)
    on error resume next
    dim fso,tempArr,cPATH,ePATH,i:i = 0
    set fso = server.createobject("scripting.filesystemobject")
    sPATH = sPATH & filename & site_extname
    if fso.fileexists(server.mappath(sPATH)) then
        fso.deletefile(server.mappath(sPATH))
        while(i <> -1)
            i = i + 1
            ePATH = replace(sPATH,filename & ".",filename & "_" & i + 1 & ".")
            if fso.fileexists(server.mappath(ePATH)) then
                fso.deletefile(server.mappath(ePATH))
            else
                i = -1
            end if
        wend
    end if
end function

class stringclass
    public function getstr(strhtml)
        dim PatrnStr
            PatrnStr="<.*?>"
        dim objRegEx
        set objRegEx = new RegExp
            objRegEx.pattern = PatrnStr
            objRegEx.ignorecase = true
            objRegEx.global = true
        getstr = objRegEx.replace(strhtml,"")
        set objRegEx = nothing
    end function
    public function replacestr(patrn,mstr,replstr)
        dim objRegEx
        set objRegEx = new RegExp
            objRegEx.pattern = patrn
            objRegEx.ignorecase = true
            objRegEx.global = true
        replacestr = objRegEx.replace(mstr,replstr)
        set objRegEx = nothing
    end function
    public function classcustomtag(byval patrn,byval mstr,byval classid,byval indexid,byval pagestr)
        dim objRegEx,match,matches
        set objRegEx = new RegExp
            objRegEx.pattern = patrn
            objRegEx.ignorecase = true
            objRegEx.global = true
        set matches = objRegEx.execute(mstr)
        for each match in matches
            mstr = replace(mstr,match.value,parseclasstag(match.value,classid,indexid,pagestr))
        next
        set matches = nothing
        set objRegEx = nothing
        classcustomtag = mstr
    end function
    public function newscustomtag(byval patrn,byval mstr,byval classid,byval newsid,byval keywords)
        dim objRegEx,match,matches
        set objRegEx = new RegExp
            objRegEx.pattern = patrn
            objRegEx.ignorecase = true
            objRegEx.global = true
        set matches = objRegEx.execute(mstr)
        for each match in matches
            mstr = replace(mstr,match.value,parsenewstag(match.value,classid,newsid,keywords))
        next
        set matches = nothing
        set objRegEx = nothing
        newscustomtag = mstr
    end function
end class

function processcustomtag(byval scontent)
    dim objRegEx,match,matches
    set objRegEx = new RegExp
        objRegEx.pattern = "{ncms:[^<>]+?\/}"
        objRegEx.ignorecase = true
        objRegEx.global = true
    set matches = objRegEx.execute(scontent)
    for each match in matches
        scontent = replace(scontent,match.value,parsetag(match.value))
    next
    set matches = nothing
    set objRegEx = nothing
    processcustomtag = scontent
end function

function X_processcustomtag(byval scontent)
    dim objRegEx,match,matches
    set objRegEx = new RegExp
        objRegEx.pattern = "(\[ncms:).+?(\])(.|\n)+?(\[\/ncms\])"
        objRegEx.ignorecase = true
        objRegEx.global = true
    set matches = objRegEx.execute(scontent)
    for each match in matches
        scontent = replace(scontent,match.value,parsetag(match.value))
    next
    set matches = nothing
    set objRegEx = nothing
    X_processcustomtag = scontent
end function

function getattribute(byval strattribute,byval strtag)
    dim objRegEx,matches
    set objRegEx = new RegExp
        objRegEx.pattern = lcase(strattribute)&"=""[0-9a-zA-Z]*"""
        objRegEx.ignorecase = true
        objRegEx.global = true
    set matches = objRegEx.execute(strtag)
    if matches.count > 0 then
        getattribute = split(matches(0).value,"""")(1)
    else
        getattribute = ""
    end if
    set matches = nothing
    set objRegEx = nothing
end function

function getinnerhtml(byval strhtml)
    dim objregex,matches,str
    set objregex = new regexp
    objregex.pattern = "(\])(.|\n)+?(\[\/ncms\])"
    objregex.ignorecase = true
    objregex.global = false
    set matches = objregex.execute(strhtml)
        if matches.count > 0 then
            str = trim(matches.item(0).value)
        end if
    set matches = nothing
    if len(str) > 8 then
        getinnerhtml = mid(str,2,len(str) - 8)
    end if
end function

function parsetag(byval strtag)
    dim arrresult,classname,arrattributes,objclass
    if len(strtag) = 0 then exit function
    arrresult = split(strtag,":")
    classname = split(arrresult(1)," ")(0)
    select case lcase(classname)
        case "news"
            set objclass = new ncmsnewstag
                if not isnumeric(getattribute("id",strtag)) then
                    response.write("标签[ncms:news]参数错误!参数[id]必须是数字!")
                    response.end()
                end if
                objclass.id = getattribute("id",strtag)
                if not isnumeric(getattribute("num",strtag)) then
                    response.write("标签[ncms:news]参数错误!参数[num]必须是数字!")
                    response.end()
                end if
                objclass.num = getattribute("num",strtag)
                if not isnumeric(getattribute("len",strtag)) then
                    response.write("标签[ncms:news]参数错误!参数[len]必须是数字!")
                    response.end()
                end if
                objclass.len = getattribute("len",strtag)
                objclass.show = getattribute("show",strtag)
                if getattribute("lih",strtag) <> "" and not isnumeric(getattribute("lih",strtag)) then
                    response.write("标签[ncms:news]参数错误!参数[lih]必须是数字!")
                    response.end()
                end if
                objclass.lih = getattribute("lih",strtag)
                if getattribute("imgw",strtag) <> "" and not isnumeric(getattribute("imgw",strtag)) then
                    response.write("标签[ncms:news]参数错误!参数[imgw]必须是数字!")
                    response.end()
                end if
                objclass.imgw = getattribute("imgw",strtag)
                if getattribute("imgh",strtag) <> "" and not isnumeric(getattribute("imgh",strtag)) then
                    response.write("标签[ncms:news]参数错误!参数[imgh]必须是数字!")
                    response.end()
                end if
                objclass.imgh = getattribute("imgh",strtag)
                if getattribute("tgt",strtag) <> "" and getattribute("tgt",strtag) <> "blank" then
                    response.write("标签[ncms:news]参数错误!参数[tgt]必须是[<font color=""red"">blank</font>]!")
                    response.end()
                end if
                objclass.tgt = getattribute("tgt",strtag)
                if getattribute("hit",strtag) <> "" and not isnumeric(getattribute("hit",strtag)) then
                    response.write("标签[ncms:free]参数错误!参数[hit]必须是数字!")
                    response.end()
                end if
                objclass.hit = getattribute("hit",strtag)
                if not isnumeric(getattribute("col",strtag)) then
                    response.write("标签[ncms:news]参数错误!参数[col]必须是数字!")
                    response.end()
                end if
                parsetag = objclass.newsshow(getattribute("ty",strtag),getattribute("col",strtag))
            set objclass = nothing
        case "free"
            set objclass = new X_ncmsnewstag
                if not isnumeric(getattribute("id",strtag)) then
                    response.write("标签[ncms:free]参数错误!参数[id]必须是数字!")
                    response.end()
                end if
                objclass.id = getattribute("id",strtag)
                if not isnumeric(getattribute("num",strtag)) then
                    response.write("标签[ncms:free]参数错误!参数[num]必须是数字!")
                    response.end()
                end if
                objclass.num = getattribute("num",strtag)
                if not isnumeric(getattribute("len",strtag)) then
                    response.write("标签[news:free]参数错误!参数[len]必须是数字!")
                    response.end()
                end if
                objclass.len = getattribute("len",strtag)
                objclass.show = getattribute("show",strtag)
                if getattribute("lih",strtag) <> "" and not isnumeric(getattribute("lih",strtag)) then
                    response.write("标签[ncms:free]参数错误!参数[lih]必须是数字!")
                    response.end()
                end if
                objclass.lih = getattribute("lih",strtag)
                if getattribute("hit",strtag) <> "" and not isnumeric(getattribute("hit",strtag)) then
                    response.write("标签[ncms:free]参数错误!参数[hit]必须是数字!")
                    response.end()
                end if
                objclass.hit = getattribute("hit",strtag)
                if not isnumeric(getattribute("col",strtag)) then
                    response.write("标签[ncms:free]参数错误!参数[col]必须是数字!")
                    response.end()
                end if
                parsetag = objclass.newsshow(getattribute("ty",strtag),getattribute("col",strtag),getinnerhtml(strtag))
        case "menu"
            set objclass = new ncmsmenutag
                parsetag = objclass.menushow(getattribute("show",strtag))
            set objclass = nothing
        case "info"
            set objclass = new ncmsinfotag
                if not isnumeric(getattribute("num",strtag)) then
                    response.write("标签[ncms:info]参数错误!参数[num]必须是数字!")
                    response.end()
                end if
                objclass.num = getattribute("num",strtag)
                if not isnumeric(getattribute("len",strtag)) then
                    response.write("标签[ncms:info]参数错误!参数[len]必须是数字!")
                    response.end()
                end if
                objclass.len = getattribute("len",strtag)
                parsetag = objclass.infoshow()
            set objclass = nothing
        case "head"
            set objclass = new ncmsheadtag
                if not isnumeric(getattribute("num",strtag)) then
                    response.write("标签[ncms:head]参数错误!参数[num]必须是数字!")
                    response.end()
                elseif getattribute("num",strtag) > 6 then
                    response.write("标签[ncms:head]参数错误!参数[num]在[1-6]之间!")
                    response.end()
                end if
                objclass.num = getattribute("num",strtag)
                if not isnumeric(getattribute("len",strtag)) then
                    response.write("标签[ncms:head]参数错误!参数[len]必须是数字!")
                    response.end()
                end if
                objclass.len = getattribute("len",strtag)
                if getattribute("imgw",strtag) <> "" and not isnumeric(getattribute("imgw",strtag)) then
                    response.write("标签[ncms:head]参数错误!参数[imgw]必须是数字!")
                    response.end()
                end if
                objclass.imgw = getattribute("imgw",strtag)
                if getattribute("imgh",strtag) <> "" and not isnumeric(getattribute("imgh",strtag)) then
                    response.write("标签[ncms:head]参数错误!参数[imgh]必须是数字!")
                    response.end()
                end if
                objclass.imgh = getattribute("imgh",strtag)
                if getattribute("size",strtag) <> "" and not isnumeric(getattribute("size",strtag)) then
                    response.write("标签[ncms:head]参数错误!参数[size]必须是数字!")
                    response.end()
                end if
                objclass.size = getattribute("size",strtag)
                parsetag = objclass.headshow(getattribute("ty",strtag))
            set objclass = nothing
        case "link"
            set objclass = new ncmslinktag
                if not isnumeric(getattribute("num",strtag)) then
                    response.write("标签[ncms:link]参数错误!参数[num]必须是数字!")
                    response.end()
                end if
                objclass.num = getattribute("num",strtag)
                if not isnumeric(getattribute("col",strtag)) then
                    response.write("标签[ncms:link]参数错误!参数[col]必须是数字!")
                    response.end()
                end if
                parsetag = objclass.linkshow(getattribute("ty",strtag),getattribute("col",strtag))
            set objclass = nothing
        case else
            response.write("标签[ncms:xxx]构造错误!")
            response.end()
    end select
end function

function parseclasstag(byval strtag,byval classid,byval indexid,byval pagestr)
    dim arrresult,classname,arrattributes,objclass
    if len(strtag) = 0 then exit function
    arrresult = split(strtag,":")
    classname = split(arrresult(1)," ")(0)
    select case lcase(classname)
        case "list"
            set objclass = new ncmsclasstag
                if not isnumeric(getattribute("len",strtag)) then
                    response.write("标签[news:list]参数错误!参数[len]必须是数字!")
                    response.end()
                end if
                objclass.len = getattribute("len",strtag)
                objclass.order = getattribute("order",strtag)
                if getattribute("lih",strtag) <> "" and not isnumeric(getattribute("lih",strtag)) then
                    response.write("标签[news:list]参数错误!参数[lih]必须是数字!")
                    response.end()
                end if
                objclass.lih = getattribute("lih",strtag)
                if not isnumeric(getattribute("col",strtag)) then
                    response.write("标签[news:list]参数错误!参数[col]必须是数字!")
                    response.end()
                end if
                parseclasstag = objclass.classshow(getattribute("ty",strtag),getattribute("col",strtag),classid,indexid,pagestr)
            set objclass = nothing
        case else
            response.write("标签[news:xxxx]构造错误!")
            response.end()
    end select
end function

function parsenewstag(byval strtag,byval classid,byval newsid,byval keywords)
    dim arrresult,classname,arrattributes,objclass
    if len(strtag) = 0 then exit function
    arrresult = split(strtag,":")
    classname = split(arrresult(1)," ")(0)
    select case lcase(classname)
        case "relate"
            set objclass = new ncmsrelatetag
                if not isnumeric(getattribute("num",strtag)) then
                    response.write("标签[news:relate]参数错误!参数[num]必须是数字!")
                    response.end()
                end if
                objclass.num = getattribute("num",strtag)
                if not isnumeric(getattribute("len",strtag)) then
                    response.write("标签[news:relate]参数错误!参数[len]必须是数字!")
                    response.end()
                end if
                objclass.len = getattribute("len",strtag)
                if getattribute("lih",strtag) <> "" and not isnumeric(getattribute("lih",strtag)) then
                    response.write("标签[news:relate]参数错误!参数[lih]必须是数字!")
                    response.end()
                end if
                objclass.lih = getattribute("lih",strtag)
                if not isnumeric(getattribute("col",strtag)) then
                    response.write("标签[news:relate]参数错误!参数[col]必须是数字!")
                    response.end()
                end if
                parsenewstag = objclass.relateshow(getattribute("col",strtag),classid,newsid,keywords)
            set objclass = nothing
        case "page"
            set objclass = new ncmspagetag
                parsenewstag = objclass.pageshow(getattribute("show",strtag),classid,newsid)
            set objclass = nothing
        case else
            response.write("标签[news:xxxx]构造错误!")
            response.end()
    end select
end function

function getcurclasscount(classid)
    dim rs,curclasscount
    set rs = conn.execute("select count(*) from NCMS_news where classid in(" & classid & allchildclass(classid) & ")")
    if instr(rs(0)/n_listnum,".") <> 0 then
        curclasscount = fix(rs(0)/n_listnum) + 1
    else
        curclasscount = rs(0)/n_listnum
    end if
    rs.close:set rs = nothing
    getcurclasscount = curclasscount
end function

class ncmsclasstag
    public ty,len,order,lih
    public function classshow(stype,scolumn,classid,indexid,pagestr)
        dim TempHTM,xsql,rs,sql,databox,l,obox
            TempHTM = "" & chr(10) & "<table cellpadding=""0"" cellspacing=""0"" width=""100%"" border=""0"">" & chr(10)
            TempHTM = TempHTM & "<tr>" & chr(10)
        if indexid = "" or indexid = 0 then
            indexid = 1
        end if
        select case stype
            case "text"
                set rs = server.createobject("adodb.recordset")
                if order = "desc" then
                    sql = "select classid,title,click,filename,addtime from NCMS_news where classid in(" & classid & allchildclass(classid) & ") and created=1 and pagetype=0 order by id desc"
                elseif order = "asc" then
                    sql = "select classid,title,click,filename,addtime from NCMS_news where classid in(" & classid & allchildclass(classid) & ") and created=1 and pagetype=0 order by id asc"
                else
                    response.write("标签[news:list]参数[order]错误!")
                    response.end()
                end if
                rs.cursorlocation = 3
                rs.open sql,conn,1,3
                if rs.eof then
                    rs.close:set rs = nothing
                    TempHTM = "<li><font color=""red"">暂时没有新闻!</font></li>"
                    classshow = TempHTM
                    exit function
                end if
                rs.pagesize = n_listnum
                rs.absolutepage = indexid
                for l = 1 to rs.pagesize
                    if rs.eof then exit for
                    TempHTM = TempHTM & "<td height=""" & lih & """ align=""left"" valign=""middle"">·<a href=""" & site_root & "/" & site_html & "/" & getclasspath(rs("classid")) & "/" & rs("filename") & site_extname & """ title=""" & rs("title") & """>" & gottopic(rs("title"),len) & "</a></td>" & chr(10)
                    TempHTM = TempHTM & "<td height=""" & lih & """ align=""center"" valign=""middle"">" & rs("click") & "</td>" & chr(10)
                    TempHTM = TempHTM & "<td height=""" & lih & """ align=""center"" valign=""middle"">" & rs("addtime") & "</td>" & chr(10)
                    if l = rs.pagesize then
                        TempHTM = TempHTM & "</tr>" & chr(10)
                    else
                        if cint(l mod scolumn) = 0 then
                            TempHTM = TempHTM & "</tr>" & chr(10)
                            TempHTM = TempHTM & "<tr>" & chr(10)
                        end if
                    end if
                    rs.movenext
                next
                rs.close:set rs = nothing
                TempHTM = TempHTM & "</table>" & chr(10)
                classshow = TempHTM & pagestr
            case "image"
                if IsObjInstalled("persits.jpeg") = true and jpeg_gate = 0 then
                    set rs = server.createobject("adodb.recordset")
                    if order = "desc" then
                        sql = "select classid,title,bimg,filename,addtime from NCMS_news where classid in(" & classid & allchildclass(classid) & ") and isimg=1 and created=1 and pagetype=0 order by id desc"
                    elseif order = "asc" then
                        sql = "select classid,title,bimg,filename,addtime from NCMS_news where classid in(" & classid & allchildclass(classid) & ") and isimg=1 and created=1 and pagetype=0 order by id asc"
                    else
                        response.write("标签[news:list]参数[order]错误!")
                        response.end()
                    end if
                    rs.cursorlocation = 3
                    rs.open sql,conn,1,3
                    if rs.eof then
                        rs.close:set rs = nothing
                        TempHTM = "<li><font color=""red"">暂时没有新闻!</font></li>"
                        classshow = TempHTM
                        exit function
                    end if
                    rs.pagesize = n_listnum
                    rs.absolutepage = indexid
                    for l = 1 to rs.pagesize
                        if rs.eof then exit for
                        TempHTM = TempHTM & "<td><div id=""simg""><a href=""" & site_root & "/" & site_html & "/" & getclasspath(rs("classid")) & "/" & rs("filename") & site_extname & """><img height=""" & jpeg_height & """ src=""" & site_root & "/" & site_upload & "/" & site_simg & "/" & rs("bimg") & """ width=""" & jpeg_width & """ alt=""" & rs("title") & """ /></a></div></td>" & chr(10)
                        if l = rs.pagesize then
                            TempHTM = TempHTM & "</tr>" & chr(10)
                        else
                            if cint(l mod scolumn) = 0 then
                                TempHTM = TempHTM & "</tr>" & chr(10)
                                TempHTM = TempHTM & "<tr>" & chr(10)
                            end if
                        end if
                        if checkfile("" & site_root & "/" & site_upload & "/" & site_bimg & "/" & rs("bimg") & "") = true then
                            set obox = server.createobject("persits.jpeg")
                                obox.open server.mappath("" & site_root & "/" & site_upload & "/" & site_bimg & "/" & rs("bimg") & "")
                                obox.width = jpeg_width
                                obox.height = jpeg_height
                                obox.save server.mappath("" & site_root & "/" & site_upload & "/" & site_simg & "/" & rs("bimg") & "")
                            set obox = nothing
                        end if
                        rs.movenext
                    next
                    rs.close:set rs = nothing
                    TempHTM = TempHTM & "</table>" & chr(10)
                    classshow = TempHTM & pagestr
                else
                    set rs = server.createobject("adodb.recordset")
                    if order = "desc" then
                        sql = "select classid,title,bimg,filename,addtime from NCMS_news where classid in(" & classid & allchildclass(classid) & ") and isimg=1 and created=1 and pagetype=0 order by id desc"
                    elseif order = "asc" then
                        sql = "select classid,title,bimg,filename,addtime from NCMS_news where classid in(" & classid & allchildclass(classid) & ") and isimg=1 and created=1 and pagetype=0 order by id asc"
                    else
                        response.write("标签[news:list]参数[order]错误!")
                        response.end()
                    end if
                    rs.cursorlocation = 3
                    rs.open sql,conn,1,3
                    if rs.eof then
                        rs.close:set rs = nothing
                        TempHTM = "<li><font color=""red"">暂时没有新闻!</font></li>"
                        classshow = TempHTM
                        exit function
                    end if
                    rs.pagesize = n_listnum
                    rs.absolutepage = indexid
                    for l = 1 to rs.pagesize
                        if rs.eof then exit for
                        TempHTM = TempHTM & "<td><div id=""simg""><a href=""" & site_root & "/" & site_html & "/" & getclasspath(rs("classid")) & "/" & rs("filename") & site_extname & """><img height=""" & jpeg_height & """ src=""" & site_root & "/" & site_upload & "/" & site_bimg & "/" & rs("bimg") & """ width=""" & jpeg_width & """ alt=""" & rs("title") & """ /></a></div></td>" & chr(10)
                        if l = rs.pagesize then
                            TempHTM = TempHTM & "</tr>" & chr(10)
                        else
                            if cint(l mod scolumn) = 0 then
                                TempHTM = TempHTM & "</tr>" & chr(10)
                                TempHTM = TempHTM & "<tr>" & chr(10)
                            end if
                        end if
                        rs.movenext
                    next
                    rs.close:set rs = nothing
                    TempHTM = TempHTM & "</table>" & chr(10)
                    classshow = TempHTM & pagestr
                end if
            case else
                response.write("标签[news:list]参数[ty]错误!")
                response.end()
        end select
    end function
end class