首页 | 站长免费中心 | 新手上路 | 网站运营 | 网页制作 | 图片设计 | 动画设计 | 网页编程 | 网页特效 | 本站专题 | 虚拟主机 | 域名注册 | 网站建设 | 程序下载
       免费空间资源 | 新闻咨询 | 免费域名 | 免费网盘 | 网站推广 | 网站策划 | 建站经验 | 网站优化 | 网页代码 | 源码下载 | 音乐小偷 | 网络赚钱 | 论坛交流
网站建设
网站建设
虚拟主机
虚拟主机
域名注册
域名注册
711网络首页
站长工具
站长工具
网站源码
网站源码
站长论坛
站长论坛

 711网络 网页编程ASP代码

超强的ASP搜索类

来源: 互联网    日期:2007-1-13 15:11:24
 

    CLASS功能.替换传入的字符串成为SQL语句Where关键字后面的表达式: [转自:711网络工作室 http://www.tc711.com]

    词语搜索 [例如: 小明]
     
    词组搜索
    词组里面每一个词都将被检索
    例如: 小强1 小名1 小强强 小小强
     
    逻辑搜索
    支持 And 和 Or 运算符.
    例如: 小明 And 小强 And 小小强
    复合条件:
    例如:(小小明 Or 小明) And (小强 Or 小小强)
    例如:(小小明 Or 小名) And 小小强
    例如: ROOT1 And (广东人 Or 北京人)  [转自:711网络工作室 http://www.tc711.com]

    -----------------------------------------------------------
    Class CreateQueryString

     Public objReg
     Public intStart
     Public strField
     Private objNode2
     Private strText

     Public Property Let QueryString( strValue )
     strText = Lcase( strValue )
     End Property
     
     Private Sub Class_Initialize()
     Set objReg = new RegExp
     strField = "(标题+文章)"
     End Sub
     
     Private Sub Class_Terminate()
     Set objReg = Nothing
     End Sub

     Public Default Function GetText()
     Dim blnRes
     Dim strSky
     With objReg
     .IgnoreCase = true
     .Global = True
     .Pattern = "s"
     blnRes = .Test( strText )
     End With
     If (Not blnRes) Then
     intStart = 2
     GetText = strField & " like '%" & strText & "%'"
     Else
     objReg.Pattern = "sand|sor"
     blnRes = objReg.Test( strText )
     If blnRes Then
     strSky = check()
     If strSky = False Then
     GetText = wahaha()
     Else
     GetText = strSky
     End if
     Else
     GetText = wahaha()
     End if
     End If
     End Function
     
     Private Function wahaha()
     Dim strTer
     Dim strLikes
     Dim strOrs
     Dim strI
     Dim objRe
     strTer = ""
     strLikes = " or (" & strField & " like '%"
     strOrs = "%')"
     objReg.Pattern = "(S*S)"
     Set objRe = objReg.Execute(strText)
     For Each strI In objRe
     strTer = strTer & strLikes & strI & strOrs
     Next
     wahaha = Mid( strTer , 4 )
     intStart = 3
     End Function

     Private Function CheckYes( strMode , intCount)
     Dim objNode1
     objReg.Pattern = strMode
     Set objNode1 = objReg.Execute( strText )
     If objNode1.Count < 1 Then
     CheckYes = True
     Else
     Set objNode2 = objNode1( 0 )
     If objNode2.subMatches.Count < intCount Then
     CheckYes = True
     End If
     End If
     End Function
     
     Private Function ORAND()
     Dim strSSS
     Dim strCCC
     Dim strAAA
     Dim a143
     Dim i
     Dim objN
     Dim blnTru
     Dim blnBBB
     strSSS = "(" & strField & " like '%"
     strCCC = "%')"
     strAAA = ""
     n1 = 0
     blnTru = True
     blnBBB = True
     
     objReg.Pattern = "(S*S)"
     Set objN = objReg.Execute( strText )
     a143 = objN.Count - 1
     If (objN.Item( a143 ) = "and") Or (objN.Item( a143 ) = "or") Then
     ORAND = False
     Exit Function
     End if
     For Each i In objN
     If blnTru Then
     If (i <> "and") And (i <> "or") Then
     blnTru = False
     strAAA = strAAA & strSSS & i & strCCC
     Else
     blnBBB = false
     Exit for
     End if
     Else
     If (i = "and") Or (i = "or") Then
     blnTru = True
     strAAA = strAAA & i
     Else
     blnBBB = False
     Exit For
     End if
     End if
     Next
     If (Not blnBBB) Then
     ORAND = False
     Else
     ORAND = strAAA
     intStart = 4
     End if
     End Function
     
     
     
     Private Function check()
     Dim re
     Dim re1
     Dim re2
     Dim re3
     Dim str
     Dim str1
     Dim a1
     Dim a2
     Dim a3
     Dim a4
     str = strField & " like '%"
     str1 = "%'"
     With objReg
     .Pattern = "^(.+)s(and|or)s"
     re = .Test( strText )
     .Pattern = "s(and|or)s(.+)$"
     re3 = .Test( strText )
     End With
     If re And re3 Then
     If CheckYes( "^((S*S) (borb|bandb) (S*S)) (and|or) ((S*S) (borb|bandb) (S*S))$" , 6 ) Then
     check = False
     Else
     With objNode2
     a1 = .submatches(0)
     a2 = .submatches(2)
     a3 = .submatches(4)
     a4 = .submatches(6)
     check = "(" & str & a1 & str1 & " " & .submatches(1) & " " & str & a2 & str1 & ") " &_
     .submatches(3) & " (" & str & a3 & str1 & " " & .submatches(5) & " " & str & a4 & str1 & ")"
     intStart = 5
     End With
     End If
     ElseIf re Then
     If CheckYes( "^((S*S) (borb|bandb) (S*S)) (and|or) (.+)" , 4 ) Then
     check = False
     Else
     With objNode2
     a1 = .submatches(0)
     a2 = .submatches(2)
     a3 = .submatches(4)
     check = "(" & str & a1 & str1 & " " & .submatches(1) & " " & str & a2 & str1 & ") " &_
     .submatches(3) & " (" & str & a3 & str1 & ")"
     intStart = 5
     End With
     End If
     ElseIf re3 Then
     If CheckYes( "(.+) (and|or) ((S*S) (borb|bandb) (S*S))$" , 4 ) Then
     check = False
     Else
     With objNode2
     a1 = .submatches(0)
     a2 = .submatches(2)
     a3 = .submatches(4)
     check = "(" & str & a1 & str1 & ") " & .submatches(1) & " (" & str & a2 & str1 & " " &_
     .submatches(3) & " " & str & a3 & str1 & ")"
     intStart = 5
     End With
     End If
     Else
     check = ORAND()
     End If
     End Function

    End Class
    -------------------------注意-----------------------------
    替换好的字符串并不是完整的SQL语句.只是生成SQL语句的WHERE关键字后面的表达式.发送到ASP程序的时候.你可以在前面加上
    "select id,标题,name,TableName from SearchAll where "
    这样类似的SQL语句
    -------------------------VBScript例子-----------------------------
     Dim objROOT1
     Set objROOT1 = new CreateQueryString
     objROOT1.QueryString = strText '====传入要替换的字符串
     objROOT1.strField = "要查询的字段名字" '===如果不设置.默认值是"(标题+文章)"
     strText = objROOT1() '=========得到替换好的SQL语句
     If (objQueryString.intStart = 4) Then
     Call Msgbox("启动按逻辑搜索")
     End If
     Set objROOT1 = Nothing

     



更多的超强的ASP搜索类请到论坛查看: http://BBS.TC711.COM



【 双击滚屏 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】 来源: 互联网    日期:2007-1-13 15:11:24   

发 表 评 论
查看评论

  您的大名:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
认证编码: 刷新验证码
点评内容: 字数0
  精品推荐  
  本月推荐  
  友情赞助  

关于我们 | 联系我们 | 广告投放 | 留言反馈 | 免费程序 | 虚拟主机 | 网站建设 |  网站推广 |  google_sitemap baidu_sitemap RSS订阅
本站所有资源均来自互联网,如有侵犯您的版权或其他问题,请通知管理员,我们会在最短的时间回复您
Copyright © 2005-2015 Tc711.Com All Rights Reserved 版权所有·711网络   蜀ICP备05021915号
110网监备案 信息产业备案 不良信息举报