高分求助ASP图片正则表达式,并帮忙修改代码,请熟练的高手帮忙
'**************************************************'函数名:SaveBeyondFile'作用:保存远程文件到本地'参...
'**************************************************
'函数名:SaveBeyondFile
'作 用:保存远程文件到本地
'参 数:LocalFile 本地文件,BFU远程文件
'返回值:无
'**************************************************
Public Function ReplaceBeyondUrl(ReplaceContent, SaveFilePath)
Dim re, BeyondFile, BFU, SaveFileName,SaveFileList
Set re = New RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "((http|https|ftp|rtsp|mms):(\/\/|\\\\){1}((\w)+[.]){1,}(net|com|cn|org|cc|tv|[0-9]{1,3})(\S*\/)((\S)+[.]{1}(gif|jpg|png|bmp)))"
Set BeyondFile = re.Execute(ReplaceContent)
Set re = Nothing
For Each BFU In BeyondFile
If Instr(SaveFileList,BFU)=0 Then
SaveFileName = Year(Now()) & Month(Now()) & Day(Now()) & MakeRandom(10) & Mid(BFU, InStrRev(BFU, "."))
If Instr(BFU,Setting(2))<=0 Then
Call SaveBeyondFile(SaveFilePath&SaveFileName,BFU)
ReplaceContent = Replace(ReplaceContent, BFU, Setting(2) & SaveFilePath & SaveFileName)
End If
End If
SaveFileList=SaveFileList & "," & BFU
Next
ReplaceBeyondUrl = ReplaceContent
End Function
'==================================================
以上代码是远程存图的函数,但是由于正则表但是的问题,只能匹配到有后缀名的图片,但现在有些图片的地址不是这些后缀的比如HTTP://WWW.BAIDU.COM/IMAGCGI?/ASDFJAASDFJ/DJSALFJ总之一大串的,想匹配<img * src="http://“ *>那个src后面带有http://的地址,怎么修改上面的代码,还有那个存图的扩展名有没有好的办法弄清楚,请高手帮忙,不甚感激。
我要完整答案 展开
'函数名:SaveBeyondFile
'作 用:保存远程文件到本地
'参 数:LocalFile 本地文件,BFU远程文件
'返回值:无
'**************************************************
Public Function ReplaceBeyondUrl(ReplaceContent, SaveFilePath)
Dim re, BeyondFile, BFU, SaveFileName,SaveFileList
Set re = New RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "((http|https|ftp|rtsp|mms):(\/\/|\\\\){1}((\w)+[.]){1,}(net|com|cn|org|cc|tv|[0-9]{1,3})(\S*\/)((\S)+[.]{1}(gif|jpg|png|bmp)))"
Set BeyondFile = re.Execute(ReplaceContent)
Set re = Nothing
For Each BFU In BeyondFile
If Instr(SaveFileList,BFU)=0 Then
SaveFileName = Year(Now()) & Month(Now()) & Day(Now()) & MakeRandom(10) & Mid(BFU, InStrRev(BFU, "."))
If Instr(BFU,Setting(2))<=0 Then
Call SaveBeyondFile(SaveFilePath&SaveFileName,BFU)
ReplaceContent = Replace(ReplaceContent, BFU, Setting(2) & SaveFilePath & SaveFileName)
End If
End If
SaveFileList=SaveFileList & "," & BFU
Next
ReplaceBeyondUrl = ReplaceContent
End Function
'==================================================
以上代码是远程存图的函数,但是由于正则表但是的问题,只能匹配到有后缀名的图片,但现在有些图片的地址不是这些后缀的比如HTTP://WWW.BAIDU.COM/IMAGCGI?/ASDFJAASDFJ/DJSALFJ总之一大串的,想匹配<img * src="http://“ *>那个src后面带有http://的地址,怎么修改上面的代码,还有那个存图的扩展名有没有好的办法弄清楚,请高手帮忙,不甚感激。
我要完整答案 展开
展开全部
可能你要改的代码会比较多,给你一个测试例吧,你可以参考着来改.
ReplaceContent = "abc<img name=""aaa"" src=""http://aaa.bb/a.jpg""/><img src='http://yyy.aa/c.png'><img src=http://xyz.ccc/b.jpg>"
Set re = New RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "<img\s+[^>]*src=(""(http:\/\/[^""]+)""|'(http:\/\/[^']+)'|(http:\/悄厅档\/[^""'>\s]+))[^>]*>"
Set BeyondFile = re.Execute(ReplaceContent)
response.write BeyondFile.Count & "<br>"
For Each BFU In BeyondFile
response.write BFU.SubMatches(1) & BFU.SubMatches(2) & BFU.SubMatches(3) & "<br>"
Next
由于这里使用了多个子匹配,所以对于子匹配的使用可能会比较麻烦.
至于你说的文件类型,通过URL是无法判断的,可以将文件下载以后检查文件伏漏的前几个字节,多数图片文件头都有特定的字节,具启乱体可以百度.
ReplaceContent = "abc<img name=""aaa"" src=""http://aaa.bb/a.jpg""/><img src='http://yyy.aa/c.png'><img src=http://xyz.ccc/b.jpg>"
Set re = New RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "<img\s+[^>]*src=(""(http:\/\/[^""]+)""|'(http:\/\/[^']+)'|(http:\/悄厅档\/[^""'>\s]+))[^>]*>"
Set BeyondFile = re.Execute(ReplaceContent)
response.write BeyondFile.Count & "<br>"
For Each BFU In BeyondFile
response.write BFU.SubMatches(1) & BFU.SubMatches(2) & BFU.SubMatches(3) & "<br>"
Next
由于这里使用了多个子匹配,所以对于子匹配的使用可能会比较麻烦.
至于你说的文件类型,通过URL是无法判断的,可以将文件下载以后检查文件伏漏的前几个字节,多数图片文件头都有特定的字节,具启乱体可以百度.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询