ASP获取网页全部图片地址并保存为数组的正则

目前还是有BUG的,最新的测试页面在: http://www.reallydo.com/getimg.asp 
正则分析页面在: http://jorkin.reallydo.com/article.asp?id=380 
发现BUG请在后面留言,谢谢. 
1.31修正 
src=后面有空格不能正确匹配.已修正. 
src=''为空时出错.已修正. 
发现BUG: 图片路径有多个空格时只能保留一个.未修正. 
2.18修正 
图片路径有多个空格时只能保留一个的BUG.已修正. 
复制代码 代码如下:
<% 
'功能:获取全部图片地址,保存到一个数组. 
'来源: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 
%> 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值