关于相对url和绝对url的问题,谁能给我个函数!(100分)

  • 主题发起人 主题发起人 satanmonkey
  • 开始时间 开始时间
S

satanmonkey

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在碰到一个问题,需要根据相对url,得到绝对url,我自己写了个函数,是根据'/'来计算的,但进天碰到个例子就不能用了。

http://www.flashempire.com/top10/top10.php?id=2148&url=swfC/2110&name=小樱桃卡通系列之智取游乐场&author=小樱桃卡通&x=500&y=300&k=980
中的相对路径swfC/2110.swf
根据我的算法计算出来是
http://www.flashempire.com/top10/top10.php?id=2148&url=swfC/2110&name=小樱桃卡通系列之智取游乐场&author=小樱桃卡通&x=500&y=300&k=980/swfC/2110.swf
但正确的应该是http://www.flashempire.com/top10/swfC/2110.swf

谁有比较完善的这种函数?
 
怎么没人回答啊?

顺便问一下。 用了zlib.pas的程序,是不是要带个zlib.dll一起发布啊?
这个问题给10分。第一个回答的有效
 
把你的函数贴出来看看。
 
function GetFullUrl(DescUrl,BaseUrl:string):string;
var
i,count,count1:integer;
CpBaseUrl:string;
begin
if LowerCase(copy(DescUrl,1,7))='http://' then //如果本来就是全url
begin
result:=DescUrl;
exit;
end;
CpBaseUrl:=BaseUrl; //计算参考路径最后的'/'
if CpBaseUrl[length(CpBaseUrl)]<>'/' then
begin
count:=0;
for i:=Length(CpBaseUrl) downto 1 do
begin
if (CpBaseUrl='.') then //如果是文件
begin
inc(count);
end;
if CpBaseUrl='/' then //如果是目录
begin
if count=0 then
begin
CpBaseUrl:=CpBaseUrl+'/' ;
break;
end
else
begin
CpBaseUrl:=copy(CpBaseUrl,1,i) ;
break;
end;
end;
end;
end;
if DescUrl[1]='.' then //如果用的是相对路径
begin
count:=0;
for i:=1 to length(DescUrl) do
begin
if DescUrl='.' then
inc(count)
else
begin
break;
end;
end;
count1:=count;
for i:=length(CpBaseUrl) downto 1 do
begin
if count=0 then
begin
result:=GetFullUrl(copy(DescUrl,Count1+2,length(DescUrl)-Count1+2),copy(CpBaseUrl,1,i)); //递归
exit;
break;
end
else
begin
if CpBaseUrl='/' then
dec(count);
end;
end;
exit;
end;
if DescUrl[1]='/' then // 如果要根目录
begin
count:=0;
for i:=1 to Length(CpBaseUrl) do
begin
if CpBaseUrl='/' then
inc(count);
if count=3 then
begin
result:=copy(CpBaseUrl,1,i-1)+DescUrl;
exit;
break;
end;
end;
end;
result :=CpBaseURL+DescURL;
end;
 
先截掉问号后的东东,再处理
 
3Q
这么简单的问题,我怎么就是想不起来?
笨死了。
 
是不是已经解决问题了?
 
基本解决问题了,不过还赛不太完美,你以没有扫描更好的办法?
 
怎么不完美?我曾经改了一下你的程序(只改了一个字符),能实现你要的结果,但并不太明白你是怎么使用的。
 
怎么改的?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
843
import
I
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
I
回复
0
查看
806
import
I
后退
顶部