ResolveUrl()
好象是这么写的吧

解决方案 »

  1.   

    对了
    我忘了说了
    我是用c++的
    里面没有这些东西呀
    我想直接通过URL获取
    可以做到吗
      

  2.   

    这个是个很麻烦的事情。
    如果你仅仅是解决什么css的连接,那好点。
    如果包括整个网页,那就还有其他超连接,图片,甚至背景图象。
    如果有的背景图象是写在css里的,那你即使把路径都写对了,还是没用。
    你不至于在不同目录等级的页面,你就把css里应用背景图象的样式改成不同的地址吧。你还是把<link href="csdn_index.css" type="text/css" rel="stylesheet" />
    改成<link href="/csdn_index.css" type="text/css" rel="stylesheet" />
    如果在css目录下,就改成
    <link href="/css/csdn_index.css" type="text/css" rel="stylesheet" />
    图片,连接那些也一样。
    这样你就不需要再来转换url了。如果你实在要这样,那就在你得到你要保存的html字符串之前,用正则表达式得到所有href,src,background等的值。然后依次用Server.MapPath(href或src或backgroud等),得到对应的物理地址。
    在通过Request.PhysicalApplicationPath,来得到当前应用程序的根的绝对路径。
    得到的href或src或backgroud等的绝对路径里也会有Request.PhysicalApplicationPath的值的部分。
    你只需要将得到的href或src或backgroud等的绝对路径里对应的Request.PhysicalApplicationPath替换成当前应用程序的web路径(如http://www.xxx.com/)就可以了。============================================================
    这个只是在自己的网站上。
    如果你是要通过程序取其他网站的页面,再将取得的结果实行你现在所想要的操作的话,那就麻烦了。
      

  3.   

    获取其他网站:
    如url为:
    http://www.xxx.xom/1/2/3/1.aspx
    url拆分为数组:
    url[0]="http://www.xxx.xom";
    url[1]="1";
    url[2]="2";
    url[3]="3";一般要处理的属性为:
    href,src,backgroud漏掉的自己补充。
    当然还是先要获得这些属性的值。
    做一个处理这些属性的方法。这些属性的值一般有这几种情况:1:  5.aspx
    2:  ./5.aspx
    3:  ../5.aspx(../可以是一个或多个)
    4:  http://www.xxx.xom/5.aspx情况4的可以不做处理。
    情况1直接在前面加url[0]/url[1]/url[2]/url[3]/
    情况2替换./为空,在前面加url[0]/url[1]/url[2]/url[3]/情况3要复杂点,这也是为什么要拆分url的原因,在这里要真正的用到。
    先得到在情况3里具体有多少个../
    再通过数组成员的个数减去../的个数,如../的个数是1个
    这里数组成员的个数是4,那结果就是3。
    在组合url数组的前3个成员:
    url[0]/url[1]/url[2]/
    把../全部替换为空,将
    url[0]/url[1]/url[2]/放在前面,结果就出来了。
    如属性是:
    ../1.aspx
    那么结果就是url[0]/url[1]/url[2]/1.aspx
    ../../2.aspx
    那么结果就是url[0]/url[1]/2.aspx这里还要做一个判断就是:
    数组成员的个数减去../的个数,这个结果出来以后,要判断结果是否小于1,如果小于1,就视为1,也就是小于1的结果全部让他等于1。
    因为无论再多的../它都不能超过http://www.xxx.xom,始终都在http://www.xxx.xom内。对于这种的值:
    ../../123/432/.././6.aspx
    其实他后面的../或./我们完全不用去管他,只需要做前面的../的处理就可以了/