软讯网络 > 网站建设 > ASP.NET > shawl.qiu?ASP?站内文件搜索类?v1.0
【标 题】:shawl.qiu?ASP?站内文件搜索类?v1.0
【关键字】:
shawl.qiu,ASP,v1.0
【来 源】:http://blog.csdn.net/btbtd/archive/2006/10/07/1323891.aspx
shawl.qiu?ASP?站内文件搜索类?v1.0
shawl.qiu ASP 站内文件搜索类 v1.0
Subject: shawl.qiu ASP 站内文件搜索类 v1.0 功能描述主要实现功能:
0. 全局功能
0.1 支持自定义文件类型搜索
0.2 支持自定义是否搜索所有子级文件夹
0.3 支持自定义根目录
0.4 支持自定义站点域名链接
1. 支持文件名搜索
1.1 支持搜索中文文件名
2. 支持文件内容搜索:
2.1 支持不同编码的中文内容搜索
2.2 支持自定义显示搜索到的文件 X个字 内容
后续版本待加功能:
1. 实现数组分页
2. 实现缓存搜索
3. 实现删除编辑功能
最终版本待完成功能:
1. 效率效率效率...
已知 Bug:
0. 全局 Bug:
1. 文件内容搜索:
1.1 搜索关键词如果不包含中文, 显示搜索摘要可能出现乱码(该技术目前尚无法解决)
1.2 无法搜索文件名含空格的文件内
Subject: shawl.qiu ASP 站内文件搜索类 v1.0
Author: shawl.qiu
Version: 1.0
Date: 2006-10-06
Blog: http://blog.csdn.net/btbtd
E-Mail: shawl.qiu@gmail.com
目录:
1. shawl.qiu ASP 站内文件搜索类 v1.0 源代码
2. 预览
2.1 搜索文件名预览
2.2 搜索文件内容预览
shawl.qiu
2006-10-06
http://blog.csdn.net/btbtd
1. shawl.qiu ASP 站内文件搜索类 v1.0 源代码
linenum - <%
- dim oFileSearch
- set oFileSearch= new cFileSearch
- with oFileSearch
- '-----------------------------------------
- ' shawl.qiu ASP 站内文件搜索类 v1.0
- .auHeader ' 头部信息 [非必须]
- '-----------------------------------------
- ' 参数设置
- .pbQueryString=request.queryString("id") ' [必选项]
- .pbAction="?id=sf" ' [必选项]
- .pbWww=" http://127.0.0.1:81" '站点域名 [非必须]
- .pbRoot=server.MapPath("/") ' 站点根目录 [必选项]
- .pbRootForSearch=server.MapPath("/") ' 默认搜索路径 [必选项]
- '-----------------------------------------
- ' 允许搜索的文件类型设置
- ' 设置允许搜索的文件类型 all 或 空值 搜索全部, 搜索特定文件类型请用竖杠(|)分隔, 不要带点(.).
- '-----------------------
- ' 文件名搜索
- .pbAcceptExtensionFnSrh="asp|htm|html|txt|xml" ' 允许搜索的文件类型 [非必须]
- '------------
- ' 文件内容搜索
- .pbAcceptExtensionCntSrh="asp|htm|html|txt" ' 允许搜索的文件类型, 必须指定文本文件类型 [必选项]
- ' 设置搜索文件出现频率最高的文件编码, 空值为 gb2312.
- ' 注: 如果搜索关键词中没有中文, 搜索结果就可能出现乱码, 请设置下面项为站点使用最多的编码.
- .pbAcceptExtensionCntSrhEncoding="utf-8" ' [非必须]
- .pbAcceptExtensionCntSrhCntLen=300 ' 截取并显示符合搜索关键词文件的N长度字符 [非必须]
- '-----------------------------------------
- ' 表单域默认设置
- '-------------------
- .pbFormSelectDfut=1 ' 默认选中搜索文件名或搜索文件内容, 0:搜索文件名 1:搜索文件内容 [非必须]
- .pbFormRadioCkdSstv=0 ' 敏感度默认选中哪个 Radio, 0:标准 1:模糊 2:精度 [非必须]
- .pbFormRadioCkdSbfldr=1 ' 是否搜索子目录默认选中与否, 0:不选 1:选中 [非必须]
- '-----------------------------------------
- .pgOperate ' 执行操作 [必选项]
- '-----------------------------------------
- .pgForm ' 显示表单域 [必选项]
- '-----------------------------------------
- .pgReport ' 显示搜索结果及耗时 [非必须]
- .pgShowFound ' 显示搜索到的文件 [非必须]
- '-----------------------------------------
- .auDesc ' 功能描述 [非必须]
- .auInfo ' 作者及版本信息 [非必须]
- '-----------------------------------------
- end with
- set oFileSearch=nothing
-
- class cFileSearch
- private sub class_initialize()
- pvTimer=timer()
- %>
- <style type="text/css">
- /*<![CDATA[*/
-
- body{margin:0px auto!important; width:768px!important;font: 12px Arial, Helvetica, sans-serif!important;}
- a:link, a:hover, a:visited{text-decoration:none!important;}
- .alCenter{text-align:center!important;}
- .alRight{text-align:right!important;}
- .corBlack{color:black!important;}
- .corRed{color:red!important;}
- .corBlue{color:blue!important;}
- .corGreen{color:green!important;}
- .bgCorGray{background-color:#F3F3F3!important;}
- .bgCorDp{ background-color:#FEF3E9!important; border-bottom:1px dashed blue!important;}
- .bgCorLh{ background-color:#F5FEF9!important; border-bottom:1px dashed black!important;}
- .dspTable{display:table!important;}
- .w100pc{width:100%!important;}
- .pad10px{padding:10px!important;}
- .ftBold{font-weight:bold!important;}
- .ftSize12px{font-size:12px!important;}
- .ftSize28px{font-size:28px!important;}
- .ftWeightNrm{font-weight:normal!important;letter-spacing: 1px!important;}
- .pad0px {padding:0px!important;}
- .pad2_0px {padding:2px 0px!important;}
- .pad2_5px {padding:2px 5px!important;}
- .pad5px {padding:5px!important;}
- .mrg0px {margin:0px!important;}
- .mrg5_0px {margin:5px 0px!important;}
- .mrg2_0_10_0px {margin:2px 0px 10px 0px!important;}
- .mrg10_0px {margin:10px 0px!important;}
- .ftSize14px * {font-size:14px!important;}
- .hrLevel1{border: 0px none #ffffff!important;border-bottom:1px solid red!important; }
- .hrLevel2{border: 0px none #ffffff!important;border-bottom:1px dashed blue!important; }
- .hrLevel3{border: 0px none #ffffff!important;border-bottom:1px dashed green!important; }
- /* main class */
- .cList{ padding:0px 0px 0px 2px!important; line-height:20px!important; }
- .cFileList{ background-color:#FFFFCC!important;}
- .cType{ margin:5px 0px 5px 0px}
- .cResult{ margin:0px 0px -10px 0px}
- .cFsrh{ background-color:#ECF4FD!important; margin:0px 0px 0px 0px!important; padding:5px!important; color:blue!important; word-wrap:break-word!important; width:100%!important;}
- /* main id */
- #iForChange, #iRadio{display:inline!important;}
- /*]]>*/
- </style>
- <%
- if isObject(fCkFsoAvailable)=false then
- response.write "<div class=""alCenter corRed w100pc ftSize28px pad10px"">"
- response.write "本程序需要 FSO 对象支持, 该服务器不支持 FSO, 操作被取消</div>"
- response.end
- end if
-
- pvKeyword=request.form("fmKeyword")
- pvNumFilePath=0
- pvNumFolder=0
- pvNumTotalFile=0
-
- pbAcceptExtensionFnSrh="all"
- pbAcceptExtensionCntSrh="txt"
-
- pbAcceptExtensionCntSrhEncoding="gb2312"
- pbAcceptExtensionCntSrhCntLen=200
-
- pbFormSelectDfut=0
-
- subject="shawl.qiu ASP 站内文件搜索类 v1.0"
- auBlogUrl="<a href="" http://blog.csdn.net/btbtd"" target=""_blank""> http://blog.csdn.net/btbtd</a><br/>"
- auEmail="<a href=""mailto:shawl.qiu@gmail.com"">shawl.qiu@gmail.com</a>"
- end sub
-
- private sub class_terminate()
- end sub
-
- public pbAction, pbQueryString
- public pbWww
- public pbRoot, pbRootForSearch
- public pbAcceptExtensionFnSrh, pbAcceptExtensionCntSrh
- public pbAcceptExtensionCntSrhEncoding, pbAcceptExtensionCntSrhCntLen
- public pbFormSelectDfut, pbFormRadioCkdSstv, pbFormRadioCkdSbfldr
-
- private subject, auBlogUrl, auEmail
- private pvKeyword
- private pvNumFilePath, pvNumFolder, pvNumTotalFile
- private pvTimer
- private pvTotalFileArray
- private pvFmQueryOption, pvFmKeyword, pvFmSensitive, pvFmSearchSubFolder
- private pvTypeForSeek
- private pvContentSrhDigestArray
-
- public property get pgOperate
- pgOperate=fOperate
- end property
-
- public property get pgForm
- pgForm=fFormFileSearch
- end property
-
- public property get pgReport
- if pbQueryString="" or pvNumFolder<1 then exit property
- response.write "<div class=""cResult alRight w100pc"">"
- response.write "本次查找共搜索了 <font class=""corBlue"">"&pvNumFolder&" 个</font> 文件夹, "
- response.write "一共有 <font class=""corBlue"">"&pvNumTotalFile&"个</font> 文件, "
- response.write "找到 <font class=""corBlue"">"&pvNumFilePath&"个</font> 文件, "
- response.write "耗时 <font class=""corBlue"">"&pvTimer&" 毫秒</font>."
- response.write "</div>"
- end property
-
- public property get pgShowFound
- if isArray(pvTotalFileArray)=false then exit property
- dim i, iTemp
- response.write "<ol class=""cFileList pad0px"">"
- for i=0 to uBound(pvTotalFileArray)
- if i mod 2=0 then iTemp="bgCorDp" else iTemp="bgCorLh"
- response.write "<li class=""cList mrg0px "&iTemp&""">"
- call trsfPath(pvTotalFileArray(i), pbRoot)
- response.write "</li>"
- if pvFmQueryOption="fmFileContent" then
- response.write "<xmp class=""cFsrh"">"
- response.write pvContentSrhDigestArray(i)
- response.write "</xmp>"
- end if
- next
- response.write "</ol>"
- end property
-
- private function pbWww_
- if pbWww<>"" then
- pbWww_=fRegExpSgl(pbWww,true,true,false,"\/$","")
- end if
- end function
-
- private function fOperate()
- dim fmQueryOption, fmKeyword, fmSensitive, fmSearchSubFolder, fmTypeForSeek
-
- if isObject(request.form)=false then exit function
-
- dim temp
- for each temp in request.Form
- execute temp&"=request.form(temp)"
- next
-
- if fmKeyword="" then exit function
- pvFmQueryOption=fmQueryOption
- pvFmKeyword=fmKeyword
- pvFmSensitive=fmSensitive
- pvFmSearchSubFolder=fmSearchSubFolder
-
- if pbAcceptExtensionFnSrh<>"all" and pbAcceptExtensionFnSrh<>"" then
- if fmTypeForSeek="" then exit function
- end if
-
- pvTypeForSeek=fmTypeForSeek
-
- select case pvFmQueryOption
- case "fmFileName"
- if pvFmSearchSubFolder<>"" then
- call fRecursiveFolder(pbRootForSearch, fmKeyword, fmSensitive, fmTypeForSeek, true)
- else
- call fRecursiveFolder(pbRootForSearch, fmKeyword, fmSensitive, fmTypeForSeek, false)
- end if
- case "fmFileContent"
- if pvFmSearchSubFolder<>"" then
- call fRecursiveFile(pbRootForSearch, fmKeyword, fmTypeForSeek, true)
- else
- call fRecursiveFile(pbRootForSearch, fmKeyword, fmTypeForSeek, false)
- end if
- end select
- pvTimer=formatNumber((timer-pvTimer)*1000,0)
- end function
-
- private function fRecursiveFile(path, kWord, fltp, Rcsv)
- dim folder, folderTemp
- dim folderFile
- dim fltpTemp
- dim temp
- dim temp1, temp1_, temp1NumStart, temp1NumEnd
- dim ckKeyword, ckKeyword_, ckKeyword__
- dim tepmCnt
- ckKeyword=false
- for ckKeyword_=1 to len(pvFmKeyword)
- ckKeyword__=ascW(mid(pvFmKeyword,ckKeyword_,1))
- if ckKeyword__>127 or ckKeyword__<0 then ckKeyword=true:exit for
- next
- on error resume next
- set folder=createObject("scripting.fileSystemOBject").getFolder(path)
- pvNumFolder=pvNumFolder+1
- for each folderFile in folder.files
- for each temp in split(pvTypeForSeek,",")
- temp=trim(temp)
- if strComp(temp, fGetExtensionName(folderFile), 1)=0 then
- if ckKeyword then
- temp1=fReadAllText(folderFile, "gb2312")
- temp1_=inStr(1, temp1,pvFmKeyword, 1)
- if temp1_=0 then
- temp1=fReadAllText(folderFile, "utf-8")
- temp1_=inStr(1, temp1,pvFmKeyword, 1)
- end if
- else
- temp1=fReadAllText(folderFile, pbAcceptExtensionCntSrhEncoding)
- temp1_=inStr(1, temp1,pvFmKeyword, 1)
- end if
- if temp1_<>0 then
- if temp1_<pbAcceptExtensionCntSrhCntLen/2 then
- temp1NumStart=temp1_
- else
- temp1NumStart=temp1_-pbAcceptExtensionCntSrhCntLen/2
- end if
-
- if lenB(temp1)-temp1_<pbAcceptExtensionCntSrhCntLen/2 then
- temp1NumEnd=(lenB(temp1)-temp1_)+pbAcceptExtensionCntSrhCntLen/2
- else
- temp1NumEnd=pbAcceptExtensionCntSrhCntLen
- end if
-
- tepmCnt=mid(temp1, temp1NumStart,temp1NumEnd)
- tepmCnt=replace(tepmCnt,"<","<")
- tepmCnt=replace(tepmCnt,">",">")
-
- if isArray(pvTotalFileArray) then redim preserve pvTotalFileArray(pvNumFilePath) _
- else redim pvTotalFileArray(pvNumFilePath)
- pvTotalFileArray(pvNumFilePath)=folderFile
-
- if isArray(pvContentSrhDigestArray) then redim preserve pvContentSrhDigestArray(pvNumFilePath) _
- else redim pvContentSrhDigestArray(pvNumFilePath)
- pvContentSrhDigestArray(pvNumFilePath)=tepmCnt
- pvNumFilePath=pvNumFilePath+1
- end if
- end if
- next
- pvNumTotalFile=pvNumTotalFile+1
- next
- if Rcsv then
- for each folderTemp in folder.subfolders
- call fRecursiveFile(folderTemp, kWord, pvTypeForSeek, true)
- next
- end if
- set folder=nothing
- end function
-
- private function fReadAllText(fnph_, cstm)
- '-----------------------------------------------------
- ' 读取文本文件, 自动发现编码 或 自定编码函数 By shawl.qiu
- ' sample call: response.write fReadAllText(server.MapPath("a0.asp"),"utf-8") ' unicode
- ' sample call: response.write fReadAllText(server.MapPath("a0.asp"),"") ' auto discover
- '-----------------------------------------------------
- dim obj_, temp, cSet, pNum
- set obj_=createObject("adodb.stream")
- with obj_
- .mode=3
- if cstm="" then .type=1
- .open
- .loadFromFile fnph_
- if cstm="" then
- temp=hex(ascB(.read(1)))
- temp=temp & hex(ascB(.read(1)))
- select case temp
- case "EFBB"
- cSet="utf-8"
- pNum=2
- case "FFFE"
- cSet="unicode"
- pNum=2
- case else
- cSet="gb2312"
- pNum=0
- end select
- .position=0
- else
- cSet=cstm
- pNum=0
- end if
- .type=2
- .charset=cSet
- .position=pNum
- fReadAllText=.readText
- .close
- end with 'shawl.qiu code'
- set obj_=nothing
- end function
-
- private function fRecursiveFolder(path, kWord, cndt, fltp, Rcsv)
- dim folder, folderTemp
- dim folderFile
- dim fltpTemp
-
- set folder=createObject("scripting.fileSystemOBject").getFolder(path)
- pvNumFolder=pvNumFolder+1
- for each folderFile in folder.files
- select case cndt
- case "insensitive"
- if inStr(1, fGetBaseName(folderFile.name), kWord,1)<>0 then
- call fRecursiveFolderTemp(fltp, folderFile)
- end if
- case "precise"
- if strComp(fGetBaseName(folderFile.name), kWord,1 )=0 then
- call fRecursiveFolderTemp(fltp, folderFile)
- end if
- case else
- if strComp(left(fGetBaseName(folderFile.name),len(kWord)),kWord,1)=0 then
- call fRecursiveFolderTemp(fltp, folderFile)
- end if
- end select
- pvNumTotalFile=pvNumTotalFile+1
- next
- if Rcsv then
- for each folderTemp in folder.subfolders
- call fRecursiveFolder(folderTemp, kWord, cndt, pvTypeForSeek, true)
- next
- end if
- set folder=nothing
- end function
-
- private function fRecursiveFolderTemp(fltp_, flph_)
- dim temp_
- if fltp_="all" then
- if isArray(pvTotalFileArray) then redim preserve pvTotalFileArray(pvNumFilePath) _
- else redim pvTotalFileArray(pvNumFilePath)
- pvTotalFileArray(pvNumFilePath)=flph_
- pvNumFilePath=pvNumFilePath+1
- else
- for each temp_ in split(fltp_,",")
- temp_=trim(temp_)
- if strComp(fGetExtensionName(flph_),temp_,1)=0 then
- if isArray(pvTotalFileArray) then redim preserve pvTotalFileArray(pvNumFilePath) _
- else redim pvTotalFileArray(pvNumFilePath)
- pvTotalFileArray(pvNumFilePath)=flph_
- pvNumFilePath=pvNumFilePath+1
- end if
- next
- end if
- end function
-
- private function fGetExtensionName(path)
- ' fso 取得文件扩展名函数 By shawl.qiu
- fGetExtensionName=createObject("scripting.fileSystemObject").getExtensionName(path)
- end function
-
- private function fGetBaseName(path)
- ' fso 取得文件名函数(不带扩展名) By shawl.qiu
- fGetBaseName=createObject("scripting.fileSystemObject").getBaseName(path)
- end function
-
- private function fCkFsoAvailable()
- ' 检测服务器是否支持 FSO 函数 By shawl.qiu
- on error resume next
- dim fso_
- set fso_=createObject("scripting.fileSystemObject")
- if isObject(fso_) then
- set fCkFsoAvailable=fso_
- set fCkFsoAvailable=nothing
- end if
- set fso_=nothing
- end function
-
- private function trsfPath(sPath, rPath)
- dim temp
- temp=mid(sPath,len(rPath)+1)
- if inStr(temp,"\")<>0 then
- temp=pbWww_&replace(temp,"\","/")
- end if
- response.write "<a href="""
- response.write temp
- response.write """ target=""_blank"">"
- response.write temp
- response.write "</a>"
- end function
-
- function fRegExpSgl(str,glb,igc,mtl,pt,rpt)
- dim re_
- set re_=new RegExp
- with re_
- .global=glb
- .ignoreCase=igc
- .multiline=mtl
- .pattern=pt
- fRegExpSgl=.replace(str,rpt)
- end with
- set re_=nothing
- end function 'shawl.qiu code'
-
- private function fFormFileSearch()
- if not isNumeric(pbFormRadioCkdSstv) or RadioCkeckedTemp<0 or RadioCkeckedTemp>2 then _
- pbFormRadioCkdSstv=0
-
- 'response.write pvKeyword
- if not isNumeric(pbFormRadioCkdSbfldr) or pbFormRadioCkdSbfldr<0 or _
- pbFormRadioCkdSbfldr>1 then pbFormRadioCkdSbfldr=1
-
- dim RadioCkeckedTemp:RadioCkeckedTemp=" checked=""checked"" "
- dim sleSelected:sleSelected=" selected=""selected"" "
- dim iptDisabled:iptDisabled=" disabled=""disabled"" "
- %>
- <form action="<% response.write pbAction %>" method="post" name="formFileSearch" id="formFileSearch" class="mrg0px pad0px">
- <select name="fmQueryOption" onchange="fDynHtml(this.value,'iForChange');">
- <option value="fmFileName" <%
- if pbQueryString="" then
- if pbFormSelectDfut=0 then response.write sleSelected
- else
- if request.form("fmQueryOption")="fmFileName" then response.write sleSelected
- end if%> >文件名搜索</option>
- <option value="fmFileContent" <%
- if pbQueryString="" then
- if pbFormSelectDfut=1 then response.write sleSelected
- else
- if request.form("fmQueryOption")="fmFileContent" then response.write sleSelected
- end if%> >文件内容搜索</option>
- </select>
- <input name="fmKeyword" type="text" size="30" maxlength="255" value="<%
- if pvKeyword<>"" then response.write pvKeyword %>" onmousemove="select();focus();" />
- <input type="submit" value="Submit" /><br/>
- <div class="" id="iRadio">敏感觉:
- <input name="fmSensitive" type="radio" value="standard" <%
- if pbQueryString="" then
- if pbFormRadioCkdSstv=0 then response.write RadioCkeckedTemp
- if pbFormSelectDfut=1 then response.write iptDisabled
- else
- if request.form("fmSensitive")="standard" then response.write RadioCkeckedTemp
- end if
- if request.form("fmQueryOption")="fmFileContent" then response.write iptDisabled %> />:标准
- <input name="fmSensitive" type="radio" value="insensitive"<%
- if pbQueryString="" then
- if pbFormRadioCkdSstv=1 then response.write RadioCkeckedTemp
- if pbFormSelectDfut=1 then response.write iptDisabled
- else
- if request.form("fmSensitive")="insensitive" then response.write RadioCkeckedTemp
- end if
- if request.form("fmQueryOption")="fmFileContent" then response.write iptDisabled %> />:模糊
- <input name="fmSensitive" type="radio" value="precise" <%
- if pbQueryString="" then
- if pbFormRadioCkdSstv=2 then response.write RadioCkeckedTemp
- if pbFormSelectDfut=1 then response.write iptDisabled
- else
- if request.form("fmSensitive")="precise" then response.write RadioCkeckedTemp
- end if
- if request.form("fmQueryOption")="fmFileContent" then response.write iptDisabled %> /> :精确
- </div>
- <input name="fmSearchSubFolder" type="checkbox" id="fmSearchSubFolder" value="yes"<%
- if pbQueryString="" then
- if pbFormRadioCkdSbfldr=1 then response.write RadioCkeckedTemp
- else
- if request.form("fmSearchSubFolder")<>"" then response.write RadioCkeckedTemp
- end if %> />:搜索子目录
- <div class="cType alCenter">允许查找的文件类型:
- <div id="iForChange">
- <%
- dim temp1
- select case request.form("fmQueryOption")
- case "fmFileName"
- temp1=pbAcceptExtensionFnSrh
- case "fmFileContent"
- temp1=pbAcceptExtensionCntSrh
- case ""
- if pbFormSelectDfut=0 then temp1=pbAcceptExtensionFnSrh else temp1=pbAcceptExtensionCntSrh
- end select
- response.write fFormTemp_(temp1, "fmTypeForSeek", RadioCkeckedTemp)
- %>
- </div>
- <input type="button" value="全选" onclick="fSelect('all','fmTypeForSeek')"/>
- <input type="button" value="反选" onclick="fSelect('reverse','fmTypeForSeek')"/>
- <input type="button" value="全不选" onclick="fSelect('reset','fmTypeForSeek')"/>
- </div>
- </form>
- <script type="text/javascript">
- //<![CDATA[
- //Subject: Javascript 复选框 全选, 反选, 全不选 函数 By shawl.qiu
- function fSelect(str,iptName){
- var gItem=document.getElementsByTagName('input')
- for(i=0;i<gItem.length;i++){
- if(gItem[i].name==iptName){
- if (str=='all'){ gItem[i].checked=true;} //全选
- //---------------------------------------------- start 反选
- else if (str=='reverse'){
- if(gItem[i].checked==false){gItem[i].checked=true;} //如果没有选中, 则设为选中
- else{gItem[i].checked=false;} }//如果选中, 则设为没有选中
- //---------------------------------------------- end 反选
- else if (str=='reset'){ gItem[i].checked=false;} //全不选
- }
- }
- }
-
- //Subject: Javascript 函数: 动态改变 HTML 标签中的内容
- function fDynHtml(iptVal, id_){
- if (iptVal=='fmFileName'){
- document.getElementById(id_).innerHTML="<% response.write _
- fFormTemp(pbAcceptExtensionFnSrh, "fmTypeForSeek", "fmFileName", RadioCkeckedTemp, "fmQueryOption") %>";
- var gItem=document.getElementById('iRadio').getElementsByTagName('input')
- for(i=0;i<gItem.length;i++){
- gItem[i].disabled=false;
- gItem[0].checked=true;
- }
- }
- else if(iptVal=='fmFileContent'){
- document.getElementById(id_).innerHTML="<% response.write _
- fFormTemp(pbAcceptExtensionCntSrh, "fmTypeForSeek", "fmFileContent", RadioCkeckedTemp, "fmQueryOption") %>";
- var gItem=document.getElementById('iRadio').getElementsByTagName('input')
- for(i=0;i<gItem.length;i++){
- gItem[i].disabled=true;
- }
- }
- }
- //]]> shawl.qiu script
- </script>
- <% end function
-
- private function fFormTemp_(fltp_, iptName, ckStr)
- dim temp, temp_
- if fltp_="all" then fFormTemp="全部类型":exit function
- for each temp in split(fltp_,"|")
- fFormTemp_=fFormTemp_&"<input name="""&iptName&""" type=""checkbox"" value="""
- fFormTemp_=fFormTemp_&temp&""""
- if pbQueryString="" then
- fFormTemp_=fFormTemp_&ckStr
- else
- for each temp_ in split(request.form(iptName),",")
- if strComp(trim(temp), trim(temp_),1)=0 then
- fFormTemp_=fFormTemp_&ckStr
- end if
- next
- end if
- fFormTemp_=fFormTemp_&"/>:"&temp
- next
- end function
-
- private function fFormTemp(fltp_, iptName, iptVal, ckStr, sle4ck)
- dim temp, temp_
- ckStr=replace(ckStr,"""","'")
- if fltp_="all" then fFormTemp="全部类型":exit function
- for each temp in split(fltp_,"|")
- fFormTemp=fFormTemp&"<input name='"&iptName&"' type='checkbox' value='"
- fFormTemp=fFormTemp&temp&"'"
- if pbQueryString="" then
- fFormTemp=fFormTemp&ckStr
- else
- if iptVal= request.form(sle4ck) then
- for each temp_ in split(request.form(iptName),",")
- if strComp(trim(temp), trim(temp_),1)=0 then
- fFormTemp=fFormTemp&ckStr
- end if
- next
- else
- fFormTemp=fFormTemp&ckStr
- end if
- end if
- fFormTemp=fFormTemp&"/>:"&temp
- next
- end function
-
- public property get auHeader
- response.write "<div class=""dspTable w100pc pad10px corRed alCenter ftSize28px"">"
- response.write subject
- response.write "</div>"
- end property
-
- public property get auDesc %>
- <div class="ftSize14px pad2px_0px">
- <font class="ftBold">Subject:</font> <font class="corRed"><% response.write subject %> 功能描述</font><br/>
- <p/>
- <font class="ftBold">主要实现功能:</font><br/>
- <font class="corRed">0. 全局功能 </font><br/>
- <font class="corBlue">
- 0.1 支持自定义文件类型搜索 <br/>
- 0.2 支持自定义是否搜索所有子级文件夹 <br/>
- 0.3 支持自定义根目录 <br/>
- 0.4 支持自定义站点域名链接 <br/>
- </font>
- <p/>
- <font class="corRed">1. 支持文件名搜索 </font> <br/>
- <font class="corBlue">
- 1.1 支持搜索中文文件名 <br/>
- </font>
- <p/>
- <font class="corRed">2. 支持文件内容搜索: </font> <br/>
- <font class="corBlue">
- 2.1 支持不同编码的中文内容搜索<br/>
- 2.2 支持自定义显示搜索到的文件 X个字 内容<br/>
- </font>
- <p/>
- <font class="ftBold">后续版本待加功能:</font> <br/>
- <font class="corRed">
- 1. 实现数组分页 <br/>
- 2. 实现缓存搜索 <br/>
- 3. 实现删除编辑功能 <br/>
- </font>
- <p/>
- <font class="ftBold">最终版本待完成功能:</font> <br/>
- <font class="corRed">
- 1. 效率效率效率...
- </font>
- <p/>
- <font class="ftBold">已知 Bug:</font><br/>
- <font class="corRed">0. 全局 Bug: </font><br/>
- <p/>
- <font class="corRed">1. 文件内容搜索: </font><br/>
- <font class="corBlue">
- 1.1 搜索关键词如果不包含中文, 显示搜索摘要可能出现乱码(该技术目前尚无法解决)<br/>
- 1.2 无法搜索文件名含空格的文件内容<br/>
- </font>
- </div>
- <% end property
-
- public property get auInfo
- response.write "<div class=""ftSize14px pad2px_0px"">"
- response.write "Subject: <font class=""corRed"">"&subject&"</font><br/>"
- response.write "Author: shawl.qiu<br/>"
- response.write "Version: 1.0<br/>"
- response.write "Date: 2006-10-06<br/>"
- response.write "Blog: "&auBlogUrl
- response.write "E-Mail: "&auEmail
- response.write "</div>"
- end property
- end class
- %>
- <p/>
- <a href="?">back</a>
- <p/>
2. 预览
2.1 搜索文件名预览
shawl.qiu ASP 站内文件搜索类 v1.0
本次查找共搜索了 246 个 文件夹, 一共有 1106个 文件, 找到 13个 文件, 耗时 859 毫秒.
- http://127.0.0.1:81/a0.asp
- http://127.0.0.1:81/a0_1.asp
- http://127.0.0.1:81/a0_2.asp
- http://127.0.0.1:81/a0_3.asp
- http://127.0.0.1:81/a0_4.asp
- http://127.0.0.1:81/a0_5.asp
- http://127.0.0.1:81/a0_6.asp
- http://127.0.0.1:81/a0_7.asp
- http://127.0.0.1:81/temp/2006-09-17/a0.asp
- http://127.0.0.1:81/temp/2006-09-22/a0.asp
- http://127.0.0.1:81/temp/2006-09-30/a0.asp
- http://127.0.0.1:81/temp/2006-8-17/a0.asp
- http://127.0.0.1:81/temp/2006-8-6/a0.asp
Subject: shawl.qiu ASP 站内文件搜索类 v1.0 功能描述主要实现功能:
0. 全局功能
0.1 支持自定义文件类型搜索
0.2 支持自定义是否搜索所有子级文件夹
0.3 支持自定义根目录
0.4 支持自定义站点域名链接
1. 支持文件名搜索
1.1 支持搜索中文文件名
2. 支持文件内容搜索:
2.1 支持不同编码的中文内容搜索
2.2 支持自定义显示搜索到的文件 X个字 内容
后续版本待加功能:
1. 实现数组分页
2. 实现缓存搜索
3. 实现删除编辑功能
最终版本待完成功能:
1. 效率效率效率...
已知 Bug:
0. 全局 Bug:
1. 文件内容搜索:
1.1 搜索关键词如果不包含中文, 显示搜索摘要可能出现乱码(该技术目前尚无法解决)
1.2 无法搜索文件名含空格的文件内容
back
2.2 搜索文件内容预览
shawl.qiu ASP 站内文件搜索类 v1.0
本次查找共搜索了 246 个 文件夹, 一共有 1106个 文件, 找到 42个 文件, 耗时 5,407 毫秒.
- http://127.0.0.1:81/1gb2312.txt---------------------------------------------- 0. 语法 1. 按钮 2. 接收键盘事件 3. 数组/Array 4. 控制图片大小 5. 双击拷贝文本 6. IE 全屏显示 7. 文本框回车链接 8. 顯示頁面所有元素 9. 正则表达式 10. 接收鼠标事件 11. 字符串 12. 随机数 -------------------------------- 13. 时间操作 13.1 以毫秒为单位的倒计时跳转, 来源 CSDN <meta http-equiv="Content-Type" con
- http://127.0.0.1:81/1utf-8.txt---------------------------------------------- 0. 语法 1. 按钮 2. 接收键盘事件 3. 数组/Array 4. 控制图片大小 5. 双击拷贝文本 6. IE 全屏显示 7. 文本框回车链接 8. 顯示頁面所有元素 9. 正则表达式 10. 接收鼠标事件 11. 字符串 12. 随机数 -------------------------------- 13. 时间操作 13.1 以毫秒为单位的倒计时跳转, 来源 CSDN <meta http-equiv="Content-Type" con
- http://127.0.0.1:81/a10.aspgingRegExp=new cDebugRegExp with debuggingRegExp '--------------------------------------------- ' shawl.qiu ASP 正则调试器 v1.0 '--------------------------------------------- .auHeader ' 头部信息 [非必须] '--------------------------
- http://127.0.0.1:81/a10_1.aspgingRegExp=new cDebugRegExp with debuggingRegExp '--------------------------------------------- ' shawl.qiu ASP 正则调试器 v1.0 '--------------------------------------------- .auHeader ' 头部信息 [非必须] '--------------------------
- http://127.0.0.1:81/a5_2.aspdebuggingRegExp set debuggingRegExp=new cDebugRegExp with debuggingRegExp '--------------------------------------------- ' shawl.qiu ASP 正则调试器 v1.0 '--------------------------------------------- .header ' 头部信息 [非必须] '--------------------------------------------- ' 相关参数
- http://127.0.0.1:81/a5_3.aspdebuggingRegExp set debuggingRegExp=new cDebugRegExp with debuggingRegExp '--------------------------------------------- ' shawl.qiu ASP 正则调试器 v1.0 '--------------------------------------------- .header ' 头部信息 [非必须] '--------------------------------------------- ' 相关参数
- http://127.0.0.1:81/a6_4.aspgingRegExp=new cDebugRegExp with debuggingRegExp '--------------------------------------------- ' shawl.qiu ASP 正则调试器 v1.0 '--------------------------------------------- .header ' 头部信息 [非必须] '----------------------------
- http://127.0.0.1:81/a6_6.aspbuggingRegExp=new cDebugRegExp with debuggingRegExp '--------------------------------------------- ' shawl.qiu ASP 正则调试器 v1.0 '--------------------------------------------- .header ' 头部信息 [非必须] '-------------------------------
- http://127.0.0.1:81/a6_7.aspbuggingRegExp=new cDebugRegExp with debuggingRegExp '--------------------------------------------- ' shawl.qiu ASP 正则调试器 v1.0 '--------------------------------------------- .header ' 头部信息 [非必须] '-------------------------------
- http://127.0.0.1:81/a6_8.aspbuggingRegExp=new cDebugRegExp with debuggingRegExp '--------------------------------------------- ' shawl.qiu ASP 正则调试器 v1.0 '--------------------------------------------- .header ' 头部信息 [非必须] '-------------------------------
- http://127.0.0.1:81/a6_9.aspgingRegExp=new cDebugRegExp with debuggingRegExp '--------------------------------------------- ' shawl.qiu ASP 正则调试器 v1.0 '--------------------------------------------- .auHeader ' 头部信息 [非必须] '--------------------------
- http://127.0.0.1:81/a7.aspgingRegExp=new cDebugRegExp with debuggingRegExp '--------------------------------------------- ' shawl.qiu ASP 正则调试器 v1.0 '--------------------------------------------- .header ' 头部信息 [非必须] '----------------------------
- http://127.0.0.1:81/ASP 与正则表达式.txt正则表达式 By shawl.qiu ---/-------------------------------------------------- 目录: 1. 过滤 HTML 头部所有内容, 和所有HTML 标签. 2. 清除 request.form 项中的空行, 并把每一行保存到 数组 当中. 3. 抽取<a></a> 中 href 的链接内容 4. 如何用正则表达式为属性加上引号 5. 抽取随机数字符串, z=z1&z2&z3, 从 z 中抽取 z2 6. 把一串字符串拆开, 分放进一个数组里, 字符串如: “ab+bc-cd*mp/dd” 7.
- http://127.0.0.1:81/ASP 类库 By shawl.qiu.txt----------------------------------------- 通用类 1. ASP Class(类) 之 使用内建组件 cdo.message 发送邮件 By shawl.qiu 2. shawl.qiu ASP 无组件上传类 3. shawl.qiu ASP 正则调试器 ---/----------------------------------------------------- 3. shawl.qiu ASP 正则调试器 3.1 shawl.qiu ASP 正则调试器 v1.0 <% dim debuggingRe
- http://127.0.0.1:81/c.txt 0.3 response.xx | response.end ---/--------------------------------------------------------- Regular Expression 2. email 替换操作, 三级域名或以内, 本正则正常工作 'email 替换操作, email 替换为 <a href=mailto:email>email</a> Set re = New RegExp re.Pattern = "([\w-]+\.+[\w-]+\@+)([\w-]+\.+[\w-]+\.+|[\w-]+\.+)(
- http://127.0.0.1:81/DW And ASP Note.txt 0.3 response.xx | response.end ---/--------------------------------------------------------- Regular Expression 2. email 替换操作, 三级域名或以内, 本正则正常工作 'email 替换操作, email 替换为 <a href=mailto:email>email</a> Set re = New RegExp re.Pattern = "([\w-]+\.+[\w-]+\@+)([\w-]+\.+[\w-]+\.+|[\w-]+\.+)(
- http://127.0.0.1:81/f.txt---------------------------------------------- 0. 语法 1. 按钮 2. 接收键盘事件 3. 数组/Array 4. 控制图片大小 5. 双击拷贝文本 6. IE 全屏显示 7. 文本框回车链接 8. 顯示頁面所有元素 9. 正则表达式 10. 接收鼠标事件 11. 字符串 12. 随机数 -------------------------------- 13. 时间操作 13.1 以毫秒为单位的倒计时跳转, 来源 CSDN <meta http-equiv="Content-Type" con
- http://127.0.0.1:81/RegexBuddy 正则使用手记 By shawl.qiu.txt正则使用手记 By shawl.qiu Dot matches newline = /nl Case Insensitive = /ig Match at line breaks /lg Find Pattern: F Replace Pattern: RP ---/------------------------------------------------------ 1. 首尾加上双引号(") F: ^(.*) RP: response.write "$1"&vbcrlf /ig /lg
- http://127.0.0.1:81/Regular.Expression.txtind] 7. 清除空行 F: \n*\r!([a-z<>0-9]) 7.1 清除空行 2 F: \n*\r!([0-9a-z\[\]\{\}\|\\\+\=\-\_\)\(\*\&\^\%\$\#\@\!\~\/\?\.\>\,\<]) RP: 6.1 正则多行搜索 <head>*[]\n*[]</head> --------------------- 注意: 必须确保你要搜索的字数不是很够大, 否则功能无法实现. 提示: 工具栏 -> 视图 -> 选项 可更改搜索字节大小 !注意: 脚本和选项的设置作用范围是两码事
- http://127.0.0.1:81/include/article/files/navibar.html/a><a href="article.asp?spid=50&sbid=193">Javascript</a><a href="article.asp?spid=50&sbid=180">Linux</a><a href="article.asp?spid=50&sbid=183">RegExp-正则表达式</a><a href="article.asp?spid=50&sbid=194">SQL/数据库</a><a href="article.asp?spid=50&sbid=212">WebServices</a><a href="article.asp?spid=50&sbid=215
- http://127.0.0.1:81/include/article/files/blocks/spid_4/newer.htmlpid=4&sbid=22&aid=16549#text" class="columnLink block">ASP中使用SQL语句教程</a><a href="article.asp?spid=4&sbid=154&aid=16543#text" class="columnLink block">正则表达式之道</a><a href="article.asp?spid=4&sbid=22&aid=16539#text" class="columnLink block">创建函数</a><a href="article.asp?spid=4&sbid=22&aid=16538#text" cl
- http://127.0.0.1:81/include/article/files/blocks/spid_4/sbid_154/hots.html正则 热门</a><a href="article.asp?spid=4&sbid=154&aid=2220#text" class="columnLink block">ASP中正则表达式的应用(一)</a><a href="article.asp?spid=4&sbid=154&aid=15370#text" class="columnLink block">正则表达式 字符 描述</a><a href="article.asp?spid=4&sbid=154&aid=15687#text" class="columnLink block">regular expres
- http://127.0.0.1:81/include/article/files/blocks/spid_4/sbid_154/newer.html正则 最新</a><a href="article.asp?spid=4&sbid=154&aid=16543#text" class="columnLink block">正则表达式之道</a><a href="article.asp?spid=4&sbid=154&aid=16093#text" class="columnLink block">VBScript 5.5b2 - RegExp's new multiline</a><a href="article.asp?spid=4&sbid=154&aid=16092#text" class="columnLink block"
- http://127.0.0.1:81/include/article/files/blocks/spid_4/sbid_27/newer.htmlid=4&sbid=27" class="columnHeader tcenter bold block">Script 最新</a><a href="article.asp?spid=4&sbid=27&aid=16025#text" class="columnLink block">常用正则表达式[文章]</a><a href="article.asp?spid=4&sbid=27&aid=15761#text" class="columnLink block">JScript中正则表达函数的说明与应用</a><a href="article.asp?spid=4&sbid=27&
- http://127.0.0.1:81/include/article/files/blocks/spid_50/hots.htmlsp;ACCESS 数据高级搜索</a><a href="article.asp?spid=50&sbid=195&aid=16104#text" class="columnLink block">VBScript 实现 UBB 显示代码附加行号, 正则实现 By Stabx</a><a href="article.asp?spid=50&sbid=195&aid=3315#text" class="columnLink block">2006-4-22 ASP VBScript 分页函数 by Stabx, 2006-04
- http://127.0.0.1:81/include/article/files/blocks/spid_50/sbid_183/hots.html正则表达式 热门</a><a href="article.asp?spid=50&sbid=183&aid=16026#text" class="columnLink block">匹配多行正则的使用 - 文本软件 /Multiline/RegExp/ By Stabx</a><a href="article.asp?spid=50&sbid=183&aid=16094#text" class="columnLink block">VBScript 中匹配多行, 并进行子操作的正则实例 /ASP VBSc
- http://127.0.0.1:81/include/article/files/blocks/spid_50/sbid_183/newer.html正则表达式 最新</a><a href="article.asp?spid=50&sbid=183&aid=16342#text" class="columnLink block">Search and Replace 正则应用一例/脚本应用</a><a href="article.asp?spid=50&sbid=183&aid=16229#text" class="columnLink block">SR 正则脚本</a><a href="article.asp?spid=50&sbid=183&aid=16094#text" class="colu
- http://127.0.0.1:81/include/article/files/blocks/spid_50/sbid_193/hots.htmlp;By Stabx</a><a href="article.asp?spid=50&sbid=193&aid=14018#text" class="columnLink block">JS&RE 控制图片显示大小, 弹出窗口自适应大小,自居中, 结合UBB与正则使用 By Stabx</a><a href="article.asp?spid=50&sbid=193&aid=15628#text" class="columnLink block">javascript 运行代码的代码 By Stabx</
- http://127.0.0.1:81/include/article/files/blocks/spid_50/sbid_193/newer.htmlp;By Stabx</a><a href="article.asp?spid=50&sbid=193&aid=14018#text" class="columnLink block">JS&RE 控制图片显示大小, 弹出窗口自适应大小,自居中, 结合UBB与正则使用 By Stabx</a><a href="article.asp?spid=50&sbid=193&aid=14008#text" class="columnLink block">Javascript 函数, 检查图片大小是否大于预期大小,&nbs
- http://127.0.0.1:81/include/article/files/blocks/spid_50/sbid_195/hots.htmlsp;ACCESS 数据高级搜索</a><a href="article.asp?spid=50&sbid=195&aid=16104#text" class="columnLink block">VBScript 实现 UBB 显示代码附加行号, 正则实现 By Stabx</a><a href="article.asp?spid=50&sbid=195&aid=3315#text" class="columnLink block">2006-4-22 ASP VBScript 分页函数 by Stabx, 2006-04
- http://127.0.0.1:81/include/article/files/blocks/spid_50/sbid_195/newer.htmlp;函数 之 标签链接</a><a href="article.asp?spid=50&sbid=195&aid=16104#text" class="columnLink block">VBScript 实现 UBB 显示代码附加行号, 正则实现 By Stabx</a><a href="article.asp?spid=50&sbid=195&aid=15808#text" class="columnLink block">ASP ACCESS 按汉字拼音查找与排序 By 
- http://127.0.0.1:81/regexpRecorde/2006/10/2006-10-4.txt正则模式: mp:(.*?) (.*) rp:$1--这是个测试--$2 mp:(.*?)(这.*?试)(.*) rp:$2$1$3 2006-10-4 4:25:30 源字串: here string 替换后字串: 这是个测试here----string 正则模式: mp:(.*?) (.*) rp:$1--这是个测试--$2 mp:(.*?)(这.*?试)(.*) rp:$2$1$3 2006-10-4 4:25:31 源字串: here string 替换后字串: 这是个测试here----string 正则模式
- http://127.0.0.1:81/temp/2006-09-17/a9.asp str="<script language=""JavaScript"" src=""http://随机数.136136.net/ad/ad.js""></script>" '''''''''''''''''''''''''''''''''''''''' ''''''''''''''单条件正则函数 by shawl.qiu' '参数说明' 'str=原字符串' 'glb=设置是否全局查找, true/false' 'igc=设置是否大小写敏感, true/false' 'mtl=设置是否匹配多行, true/false' 'pt=要替换的正则方案' 'rp
- http://127.0.0