[求助]asp怎么做路径整合?

lovehuolong 2006-08-25 07:38:06
我想了很久还是想不出来

root是网站基址
url是相对地址
求写一个函数把他们合并成绝对地址
如root="http://www.baidu.com/zhidao/a/v/b/n"
url="../../321"
则合成http://www.baidu.com/zhidao/a/v/321
url="./555"或url="/555"或url="555"
则合成http://www.baidu.com/zhidao/a/v/b/n/555
知道root
如何再在网页代码中将所有相对地址合并?

大家可以帮帮我么
谢谢大家啊
...全文
124 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lovehuolong 2006-08-29
就是判断困难啊
回复
zhangjingcheng 2006-08-28
用replace()函数判断了之后替换了
回复
lovehuolong 2006-08-28
webDreamsinger的代码好像../这种没处理
而且还是不是整页替换?
回复
lovehuolong 2006-08-27
脚本地址是固定的啊
就一个asp
要搞定的地址都是远程获取的
...
上面的代码我等下测试下
回复
文盲老顾 2006-08-26
url="./555"或url="/555"或url="555"
则合成http://www.baidu.com/zhidao/a/v/b/n/555

我写的是
url="./555"或url="555"
则合成http://www.baidu.com/zhidao/a/v/b/n/555

url="/555"
则合成http://www.baidu.com/555

应该是这样,没测试不知道对不对呢
回复
文盲老顾 2006-08-26
(未经测试)
function train(url,path)
vs=url
vp=path
finish=""
fore=0
do while left(vp,1)="."
if left(vp,3)="../" then
vp=right(vp,len(vp)-3)
fore=fore+1
else
if left(vp,2)="./" then vp=right(vp,len(vp)-2)
end if
loop
if left(vp,1)="/" then vp=right(vp,len(vp)-1):fore=-1
vp="/"&vp
if lcase(left(vs,7))="http://" then vs=right(vs,len(vs)-7)
if right(vs,1)="/" then vs=left(vs,len(vs)-1)
if instr(url,"/")>0 then
vss=split(url,"/")
if fore=-1 then finish=vss(0)&vp
if fore=0 then finish=vs&vp
if fore>0 then
if fore>=ubound(vss) then
finish=vss(0)&vp
else
for i=0 to ubound(vss)-fore
finish=finish&vss(i)&"/"
next
finish=left(finish,len(finish)-1)&vp
end if
end if
else
finish=vs&vp
end if
train="http://"&finish
end function
回复
webDreamsinger 2006-08-26
<%'=Request.ServerVariables("SCRIPT_NAME")%>能自动返回脚本文件的地址。

<%
'如
root="http://www.baidu.com/zhidao/a/v/b/n"
url="../../321"
'则合成
'http://www.baidu.com/zhidao/a/v/321
'url="./555"
'或
'url="/555"或
'url="555"
'则合成http://www.baidu.com/zhidao/a/v/b/n/555
'知道root
'如何再在网页代码中将所有相对地址合并?

'试试(未经测试):
Response.Write ("<br><br>url="""&url&"""")
if InStrRev(url,"/")>=1 then
url=right(url,len(url)-InStrRev(url,"/"))
end if
url=root&"/"&url
response.write "<br>"&url&"<br><br>"

url="./555"
Response.Write ("<br>url="""&url&"""")
if InStrRev(url,"/")>=1 then
url=right(url,len(url)-InStrRev(url,"/"))
end if
url=root&"/"&url
response.write "<br>"&url&"<br><br>"

url="/555"
Response.Write ("<br>url="""&url&"""")
if InStrRev(url,"/")>=1 then
url=right(url,len(url)-InStrRev(url,"/"))
end if
url=root&"/"&url
response.write "<br>"&url&"<br><br>"

url="555"
Response.Write ("<br>url="""&url&"""")
if InStrRev(url,"/")>=1 then
url=right(url,len(url)-InStrRev(url,"/"))
end if
url=root&"/"&url
response.write "<br>"&url&"<br><br>"
%>
回复
wansai00 2006-08-26
先根据参数得到它的文件的物理路径

然后它的url也就自然的得到了
回复
wansai00 2006-08-26
我给你写个试试




function getFullUrl(byVal s_url)
dim localpath,inetUrl
localpath = "d:\site\yoursite\"
inetUrl="http://www.baidu.com/"

dim retrun
return=server.mappath(s_url)
return=replace(return,localpath,"")
return=inetUrl & return
end function


用这个方法试试
回复
lovehuolong 2006-08-26
谢谢大家这么热心

wansai00(天紫)
我要做个代理页面,没办法使用真实地址,没办法利用浏览器

webDreamsinger(web梦想唱响者)
代码好像问题比较多啊,基本不能用

superwfei(文盲)
root="http://www.baidu.com/zhidao/a/v/b/n"
url="../../321"
response.write train(root,url)
response.write "<br>"
url="./555"
response.write train(root,url)
response.write "<br>"
url="/555"
response.write train(root,url)
response.write "<br>"
url="555"
response.write train(root,url)
response.write "<br>"
运行结果
http://http://www.baidu.com/zhidao/a/v/321
http://www.baidu.com/zhidao/a/v/b/n/555
http://http:/555
http://www.baidu.com/zhidao/a/v/b/n/555
有点问题,不过改改估计能用
但是更主要的问题是怎么对整个页面的类似代码进行替换呢?
用正则表达式么?
回复
webDreamsinger 2006-08-25
<%=Request.ServerVariables("SCRIPT_NAME")%>能自动返回脚本文件的地址。



如root="http://www.baidu.com/zhidao/a/v/b/n"
url="../../321"
则合成http://www.baidu.com/zhidao/a/v/321
url="./555"或url="/555"或url="555"
则合成http://www.baidu.com/zhidao/a/v/b/n/555
知道root
如何再在网页代码中将所有相对地址合并?

试试(未经测试):
<%
if InStrRev(url,"/")>=1 then
url=right(url,len(url)-InStrRev(url,"/")-1)
end if
url=root&"/"&url
response.write url
%>
回复
wansai00 2006-08-25
这个问题 浏览器自身比我们想的都周到 算的也比我们快 呵呵~~


<base href="http://www.baidu.com/zhidao/a/v/b/n">

<img id=imgx src='../555/.gif' />


你用脚本获取一下imgx的src属性 看是不是已经帮你整合好了???
回复
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2006-08-25 07:38
社区公告
暂无公告