仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 474|回复: 8
打印 上一主题 下一主题

[学习教程] ASP网页编程之用正则剖析图片地点,并使用XMLHTTP组件...

[复制链接]
第二个灵魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 23:16:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
实现规模效益。与传统的用户拥有硬件软件所有权和使用权以及传统的应用服务商提供一对一的服务模式不同,ASP拥有应用系统所有权,用户拥有使用权,应用系统集中放在ASP的数据中心中,集中管理,分散使用,以一对多的租赁的形式为众多用户提供有品质保证的应用技术服务,实现规模效益。xml|正则
如今基于WEB页的HTML的编纂器在旧事体系,文章体系顶用得愈来愈广,一个网页一粘就能够坚持本来的款式,同时图片也能够在这个页中坚持。可是在利用过程当中,假如所粘贴页中的图片被删除,就会在本人的页面上留下一个年夜年夜的“X”,影响美妙。之前只好把这个图片保留上去,再从头上传到服务器上,如许其实贫苦。能不克不及让服务器主动往下载图片保留在服务器而且交换页面上的链接?谜底是一定的。
要完成这个功效必要经由三个步骤:
一,获得原页中的图片的地点。办法良多,能够用支解字符串,也能够用正则婚配。理论证实用正则婚配最为复杂。经由剖析图片的地点都保留在<img>标签中。我们能够先获得一切这个标签。历程以下:
SetobjRegExp=NewRegexp设置设置工具
objRegExp.IgnoreCase=True’疏忽巨细写
objRegExp.Global=True’设置为全文搜刮
objRegExp.Pattern="<img.+?>"为了确保能正确地掏出图片地点以是分为两层设置:起首找到内里的<img>标签,然后再掏出内里的图片地点前面的getimgs函数就是完成后一个功效的。
strs=trim(str)
SetMatches=objRegExp.Execute(strs)’入手下手实行设置
ForEachMatchinMatches
RetStr=RetStr&getimgs(Match.Value)’实行第二轮的婚配
Next

一切的图片在内里都是如许的src="http://图片的地点",以是能够如许来获得切实的图片地点:
functiongetimgs(str)
getimgs=""
SetobjRegExp1=NewRegexp
objRegExp1.IgnoreCase=True
objRegExp1.Global=True
objRegExp1.Pattern="http://.+?"""’掏出内里的地点
setmm=objRegExp1.Execute(str)
ForEachMatch1inmm
getimgs=getimgs&"||"&left(Match1.Value,len(Match1.Value)-1)’把内里的地点串起来备用
next
endfunction

获得了一切的图片的地点,我们就能够举行第二步的操纵了。
二,下载图片并保留在服务器上。这个又能够分为两个步骤:一个是获得图片的内容,另外一个是保留在服务器上。获得图片的内容是经由过程上面的函数来完成的:
functiongetHTTPPage(url)
onerrorresumenext
dimhttp
sethttp=server.createobject("MSXML2.XMLHTTP")‘利用xmlhttp的办法来取得图片的内容
Http.open"GET",url,false
Http.send()
ifHttp.readystate4then
exitfunction
endif
getHTTPPage=Http.responseBody
sethttp=nothing
iferr.number0thenerr.Clear
endfunction
获得了图片的内容要保留,给人一种感到是用FSO来作就能够了,但实践上不可,如许保留程序就会堕落,由于FSO不撑持流式的文件,以是我们要挪用另外一个工具:ADO.STREM。详细的历程以下:
functionsaveimage(from,tofile)
dimgeturl,objStream,imgs
geturl=trim(from)
imgs=gethttppage(geturl)获得图片的具休内容的历程
SetobjStream=Server.CreateObject("ADODB.Stream")创建ADODB.Stream工具,必需要ADO2.5以上版本
objStream.Type=1以二进制形式翻开
objStream.Open
objstream.writeimgs将字符串内容写进缓冲
objstream.SaveToFileserver.mappath(tofile),2-将缓冲的内容写进文件
objstream.Close()封闭工具
setobjstream=nothing
endfunction
以是只需用一个轮回来把方才获得的地点中的图片全体保留上去,详细历程以下:
arrimg=split(retstr,"||")支解字串,获得内里地点列表
allimg=""
newimg=""
fori=1toubound(arrimg)
ifarrimg(i)""andinstr(allimg,arrimg(i))<1then看这个图片是不是已下载过
fname=baseurl&cstr(i&mid(arrimg(i),instrrev(arrimg(i),".")))
saveimage(arrimg(i),fname)‘保留地点的函数,历程见下面
allimg=allimg&"||"&arrimg(i)把保留上去的图片的地点串回起来,以断定要交换的地点
newimg=newimg&"||"&fname把当地的地点串回起来
endif
next
第三步就是交换本来的地点了。详细的历程就是上面了:
arrnew=split(newimg,"||")获得本来的图片地点列表
arrall=split(allimg,"||")获得已保留上去的图片的地点列表
fori=1toubound(arrnew)实行轮回交换本来的地点
strs=replace(strs,arrall(i),arrnew(i))
next
cctv=strs
讲到这里,这个函数的基础历程就是如许了,固然能够对它举行改革就能够完成更多的功效,如:加上图片巨细的限定,加上对当地机上的图片下载的限定,以避免形成反复下载图片。同时也应当看到这个函数的不敷的地方是只能处置静态的图片文件,不克不及合用程序天生的图片。

蓝丽程序员论坛收录http://www.lshdic.com

我想详细了解ASP整站代码与PSP整站代码有什么优缺点,那个更好,更安全,更用容易维护,和管理。。。
变相怪杰 该用户已被删除
沙发
发表于 2015-1-20 08:47:28 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。
小魔女 该用户已被删除
板凳
发表于 2015-1-26 14:17:58 | 只看该作者
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
精灵巫婆 该用户已被删除
地板
发表于 2015-1-27 20:58:40 | 只看该作者
尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
小妖女 该用户已被删除
5#
发表于 2015-2-5 09:47:13 | 只看该作者
ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。
老尸 该用户已被删除
6#
发表于 2015-2-11 08:42:58 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
分手快乐 该用户已被删除
7#
发表于 2015-3-2 04:56:30 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
兰色精灵 该用户已被删除
8#
发表于 2015-3-11 02:09:25 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
谁可相欹 该用户已被删除
9#
发表于 2015-3-24 19:23:54 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:44

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表