首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • [原创]ASP常用函数:getIMG() [已结贴,结贴人:pboy2925]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pboy2925
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-01-28 14:17:11 楼主
    目前还是有BUG的,最新的测试页面在

    http://www.reallydo.com/getimg.asp

    发现BUG请在后面留言,谢谢.


    [color=8000FF] <%
    [/color][color=008000]'功能:获取全部图片地址,保存到一个二维数组.
    '来源:[url]http://jorkin.reallydo.com/article.asp?id=448[/url]
    '需要ReplaceAll函数:[url]http://jorkin.reallydo.com/article.asp?id=406[/url]

    [/color][color=0000FF]Function [/color]getIMG[color=000080]([/color]sString[color=000080])
        [/color][color=0000FF]Dim [/color]sReallyDo[color=000080], [/color]regEx[color=000080], [/color]iReallyDo
        [color=0000FF]Dim [/color]oMatches[color=000080], [/color]cMatch
        [color=008000]'//定义一个空数组
        [/color]iReallyDo [color=000080]= -[/color][color=800080]1
        [/color][color=0000FF]ReDim [/color]aReallyDo[color=000080]([/color]iReallyDo[color=000080])
        [/color][color=0000FF]If [/color]IsNull[color=000080]([/color]sString[color=000080]) [/color][color=0000FF]Then
            [/color]getIMG [color=000080]= [/color][color=800000]""
            [/color][color=0000FF]Exit Function
        End If
        [/color][color=008000]'//格式化HTML代码
        '//将每个 <img 换行 方便正则替换
        [/color]sReallyDo [color=000080]= [/color]sString
        sReallyDo [color=000080]= [/color]Replace[color=000080]([/color]sReallyDo[color=000080], [/color]vbCr[color=000080], [/color][color=800000]" "[/color][color=000080])
        [/color]sReallyDo [color=000080]= [/color]Replace[color=000080]([/color]sReallyDo[color=000080], [/color]vbLf[color=000080], [/color][color=800000]" "[/color][color=000080])
        [/color]sReallyDo [color=000080]= [/color]Replace[color=000080]([/color]sReallyDo[color=000080], [/color]vbTab[color=000080], [/color][color=800000]" "[/color][color=000080])
        [/color]sReallyDo [color=000080]= [/color]Replace[color=000080]([/color]sReallyDo[color=000080], [/color][color=800000]" <img "[/color][color=000080], [/color]vbCrLf [color=000080]& [/color][color=800000]" <img "[/color][color=000080], [/color][color=800080]1[/color][color=000080], -[/color][color=800080]1[/color][color=000080], [/color][color=800080]1[/color][color=000080])
        [/color]sReallyDo [color=000080]= [/color]Replace[color=000080]([/color]sReallyDo[color=000080], [/color][color=800000]"/>"[/color][color=000080], [/color][color=800000]" />"[/color][color=000080], [/color][color=800080]1[/color][color=000080], -[/color][color=800080]1[/color][color=000080], [/color][color=800080]1[/color][color=000080])
        [/color]sReallyDo [color=000080]= [/color]ReplaceAll[color=000080]([/color]sReallyDo[color=000080], [/color][color=800000]"  "[/color][color=000080], [/color][color=800000]" "[/color][color=000080], [/color][color=0000FF]True[/color][color=000080])
        [/color]sReallyDo [color=000080]= [/color]Replace[color=000080]([/color]sReallyDo[color=000080], [/color][color=800000]"> <"[/color][color=000080], [/color][color=800000]">" [/color][color=000080]& [/color]vbCrLf [color=000080]& [/color][color=800000]" <"[/color][color=000080])
        [/color]sReallyDo [color=000080]= [/color]Replace[color=000080]([/color]sReallyDo[color=000080], [/color][color=800000]"> <"[/color][color=000080], [/color][color=800000]">" [/color][color=000080]& [/color]vbCrLf [color=000080]& [/color][color=800000]" <"[/color][color=000080])
        [/color][color=0000FF]Set [/color]regEx [color=000080]= [/color][color=0000FF]New [/color]RegExp
        regEx[color=000080].[/color]IgnoreCase [color=000080]= [/color][color=0000FF]True
        [/color]regEx[color=000080].[/color]Global [color=000080]= [/color][color=0000FF]True
        [/color][color=008000]'//去除onclick,onload等脚本
        [/color]regEx[color=000080].[/color]Pattern [color=000080]= [/color][color=800000]"\s[on].+?=([\""|\'])(.*?)\1"
        [/color]sReallyDo [color=000080]= [/color]regEx[color=000080].[/color]Replace[color=000080]([/color]sReallyDo[color=000080], [/color][color=800000]""[/color][color=000080])
        [/color][color=008000]'//将SRC不带引号的图片地址加上引号
        [/color]regEx[color=000080].[/color]Pattern [color=000080]= [/color][color=800000]" <img.*?\ssrc=([^\""\'][^\""\'\s>]*).*?>"
        [/color]sReallyDo [color=000080]= [/color]regEx[color=000080].[/color]Replace[color=000080]([/color]sReallyDo[color=000080], [/color][color=800000]" <img src=""$1"">"[/color][color=000080])
        [/color][color=008000]'//正则匹配图片SRC地址
        [/color]regEx[color=000080].[/color]Pattern [color=000080]= [/color][color=800000]" <img.*?\ssrc=([\""\'])(.[^\""\']+)\1.*?>"
        [/color][color=0000FF]Set [/color]oMatches [color=000080]= [/color]regEx[color=000080].[/color]Execute[color=000080]([/color]sReallyDo[color=000080])
        [/color][color=008000]'//将图片地址存入数组
        [/color][color=0000FF]For Each [/color]cMatch [color=0000FF]in [/color]oMatches
            iReallyDo [color=000080]= [/color]iReallyDo [color=000080]+ [/color][color=800080]1
            [/color][color=0000FF]ReDim Preserve [/color]aReallyDo[color=000080]([/color]iReallyDo[color=000080])
            [/color]aReallyDo[color=000080]([/color]iReallyDo[color=000080]) = [/color]regEx[color=000080].[/color]Replace[color=000080]([/color]cMatch[color=000080].[/color]Value[color=000080], [/color][color=800000]"$2"[/color][color=000080])
        [/color][color=0000FF]Next
        [/color]getIMG [color=000080]= [/color]aReallyDo
    [color=0000FF]End Function
    [/color][color=8000FF]%>
    [/color]
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pboy2925
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-28 14:17:591楼 得分:0
    倒....

    <%
    '功能:获取全部图片地址,保存到一个二维数组.
    '来源:http://jorkin.reallydo.com/article.asp?id=448
    '需要ReplaceAll函数:http://jorkin.reallydo.com/article.asp?id=406

    Function getIMG(sString)
        Dim sReallyDo, regEx, iReallyDo
        Dim oMatches, cMatch
        '//定义一个空数组
        iReallyDo = -1
        ReDim aReallyDo(iReallyDo)
        If IsNull(sString) Then
            getIMG = ""
            Exit Function
        End If
        '//格式化HTML代码
        '//将每个 <img 换行 方便正则替换
        sReallyDo = sString
        sReallyDo = Replace(sReallyDo, vbCr, " ")
        sReallyDo = Replace(sReallyDo, vbLf, " ")
        sReallyDo = Replace(sReallyDo, vbTab, " ")
        sReallyDo = Replace(sReallyDo, " <img ", vbCrLf & " <img ", 1, -1, 1)
        sReallyDo = Replace(sReallyDo, "/>", " />", 1, -1, 1)
        sReallyDo = ReplaceAll(sReallyDo, "  ", " ", True)
        sReallyDo = Replace(sReallyDo, "> <", ">" & vbCrLf & " <")
        sReallyDo = Replace(sReallyDo, "> <", ">" & vbCrLf & " <")
        Set regEx = New RegExp
        regEx.IgnoreCase = True
        regEx.Global = True
        '//去除onclick,onload等脚本
        regEx.Pattern = "\s[on].+?=([\""|\'])(.*?)\1"
        sReallyDo = regEx.Replace(sReallyDo, "")
        '//将SRC不带引号的图片地址加上引号
        regEx.Pattern = " <img.*?\ssrc=([^\""\'][^\""\'\s>]*).*?>"
        sReallyDo = regEx.Replace(sReallyDo, " <img src=""$1"">")
        '//正则匹配图片SRC地址
        regEx.Pattern = " <img.*?\ssrc=([\""\'])(.[^\""\']+)\1.*?>"
        Set oMatches = regEx.Execute(sReallyDo)
        '//将图片地址存入数组
        For Each cMatch in oMatches
            iReallyDo = iReallyDo + 1
            ReDim Preserve aReallyDo(iReallyDo)
            aReallyDo(iReallyDo) = regEx.Replace(cMatch.Value, "$2")
        Next
        getIMG = aReallyDo
    End Function
    %>


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yalan
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-28 14:31:192楼 得分:2
    接分~~~
    LZ很用功阿呵呵
    赞一个
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • nicholsky
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

    发表于:2008-01-28 16:26:323楼 得分:2
    测试页面没指定编码,导致有时乱码。但总体不错,支持研究精神。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • tantaiyizu
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

    发表于:2008-01-28 16:30:264楼 得分:2
    支持 。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • flyingcloud_zyf
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-28 16:33:405楼 得分:2
    很好  也有用  对解决 动态分页 ——(图片 数字 汉字)有帮助 

    努力 ...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chenguang79
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-28 16:45:496楼 得分:2
    支持。。。。。大家受益
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hanpoyangtitan
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-28 17:05:357楼 得分:2
    只接分
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pboy2925
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-28 17:10:568楼 得分:0
    引用测试页面没指定编码,导致有时乱码。但总体不错,支持研究精神。


    可以自己选择的呀....
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pboy2925
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-28 17:13:139楼 得分:0
    为什么 UBB 代码都不好用啊...

    那下面的 禁用UBB 是用来看的?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pboy2925
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-29 12:56:3010楼 得分:0
    没BUG?

    不可能的.

    大家能想到的用这个函数会出错的 <img> 代码发给我吧.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pboy2925
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-30 08:54:0311楼 得分:0
    顶顶....
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ljie520net
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-30 11:05:4912楼 得分:2
    支持。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pboy2925
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-31 09:11:4413楼 得分:0
    试试高亮效果:
    VBScript code
    <% '功能:获取全部图片地址,保存到一个数组. '来源:http://jorkin.reallydo.com/article.asp?id=448 '需要ReplaceAll函数:http://jorkin.reallydo.com/article.asp?id=406 '目前还是有BUG的,最新的测试页面在: http://www.reallydo.com/getimg.asp '正则分析页面在: http://jorkin.reallydo.com/article.asp?id=380 '发现BUG请在后面留言,谢谢. Function getIMG(sString) Dim sReallyDo, regEx, iReallyDo Dim oMatches, cMatch '//定义一个空数组 iReallyDo = -1 ReDim aReallyDo(iReallyDo) If IsNull(sString) Then getIMG = "" Exit Function End If '//格式化HTML代码 '//将每个 <img 换行 方便正则替换 sReallyDo = sString sReallyDo = Replace(sReallyDo, vbCr, " ") sReallyDo = Replace(sReallyDo, vbLf, " ") sReallyDo = Replace(sReallyDo, vbTab, " ") sReallyDo = Replace(sReallyDo, "<img ", vbCrLf & "<img ", 1, -1, 1) sReallyDo = Replace(sReallyDo, "/>", " />", 1, -1, 1) sReallyDo = ReplaceAll(sReallyDo, " ", " ", True) sReallyDo = Replace(sReallyDo, "><", ">" & vbCrLf & "<") sReallyDo = Replace(sReallyDo, "> <", ">" & vbCrLf & "<") Set regEx = New RegExp regEx.IgnoreCase = True regEx.Global = True '//去除onclick,onload等脚本 regEx.Pattern = "\s[on].+?=([\""|\'])(.*?)\1" sReallyDo = regEx.Replace(sReallyDo, "") '//将SRC不带引号的图片地址加上引号 regEx.Pattern = "<img.*?\ssrc=([^\""\'][^\""\'\s>]*).*?>" sReallyDo = regEx.Replace(sReallyDo, "<img src=""$1"">") '//正则匹配图片SRC地址 regEx.Pattern = "<img.*?\ssrc=([\""\'])(.[^\""\']+)\1.*?>" Set oMatches = regEx.Execute(sReallyDo) '//将图片地址存入数组 For Each cMatch in oMatches iReallyDo = iReallyDo + 1 ReDim Preserve aReallyDo(iReallyDo) aReallyDo(iReallyDo) = regEx.Replace(cMatch.Value, "$2") Next getIMG = aReallyDo End Function %>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yousite1
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-31 10:14:0514楼 得分:2
    不錯不錯,代碼寫得很規範,是個勤奮的程序員。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mufengwsp2004
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-31 10:34:0315楼 得分:1
    楼主很牛啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pboy2925
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-31 17:07:0716楼 得分:0
    更新了一下.

    修正了几个bug.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mh_rock
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-01-31 17:34:0917楼 得分:1
    支持。。。。。大家受益
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • feng2112
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-02-01 14:41:0418楼 得分:1
    mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pboy2925
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-02-14 16:46:4619楼 得分:0
    顶~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pboy2925
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-02-22 11:30:5620楼 得分:0
    1.31修正
    src=后面有空格不能正确匹配.已修正.
    src=''为空时出错.已修正.
    发现BUG: 图片路径有多个空格时只能保留一个.未修正.
    2.18修正
    图片路径有多个空格时只能保留一个的BUG.已修正.

    VBScript code
    <% '功能:获取全部图片地址,保存到一个数组. '来源:http://jorkin.reallydo.com/article.asp?id=448 '需要ReplaceAll函数:http://jorkin.reallydo.com/article.asp?id=406 Function getIMG(sString) Dim sReallyDo, regEx, iReallyDo Dim oMatches, cMatch '//定义一个空数组 iReallyDo = -1 ReDim aReallyDo(iReallyDo) If IsNull(sString) Then getIMG = "" Exit Function End If '//格式化HTML代码 '//将每个 <img 换行 方便正则替换 sReallyDo = sString On Error Resume Next sReallyDo = Replace(sReallyDo, vbCr, " ") sReallyDo = Replace(sReallyDo, vbLf, " ") sReallyDo = Replace(sReallyDo, vbTab, " ") sReallyDo = Replace(sReallyDo, "<img ", vbCrLf & "<img ", 1, -1, 1) sReallyDo = Replace(sReallyDo, "/>", " />", 1, -1, 1) sReallyDo = ReplaceAll(sReallyDo, "= ", "=", True) sReallyDo = ReplaceAll(sReallyDo, "> ", ">", True) sReallyDo = Replace(sReallyDo, "><", ">" & vbCrLf & "<") sReallyDo = Trim(sReallyDo) On Error GoTo 0 Set regEx = New RegExp regEx.IgnoreCase = True regEx.Global = True '//去除onclick,onload等脚本 regEx.Pattern = "\s[on].+?=([\""|\'])(.*?)\1" sReallyDo = regEx.Replace(sReallyDo, "") '//将SRC不带引号的图片地址加上引号 regEx.Pattern = "<img.*?\ssrc=([^\""\'\s][^\""\'\s>]*).*?>" sReallyDo = regEx.Replace(sReallyDo, "<img src=""$1"" />") '//正则匹配图片SRC地址 regEx.Pattern = "<img.*?\ssrc=([\""\'])([^\""\']+?)\1.*?>" Set oMatches = regEx.Execute(sReallyDo) '//将图片地址存入数组 For Each cMatch in oMatches iReallyDo = iReallyDo + 1 ReDim Preserve aReallyDo(iReallyDo) aReallyDo(iReallyDo) = regEx.Replace(cMatch.Value, "$2") Next getIMG = aReallyDo End Function %>


    目前还是有BUG的,最新的测试页面在: http://www.reallydo.com/getimg.asp
    正则分析页面在: http://jorkin.reallydo.com/article.asp?id=380
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • www990cc
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-02-22 11:54:4021楼 得分:1
    要怎么使用啊?

    getIMG("http://www.163.com")

    不是这样吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pboy2925
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-02-27 12:03:2822楼 得分:0
    getIMG()得到的应该是个数组.请不要直接Response.Write()
    修改 删除 举报 引用 回复