把URL转换成绝对地址

//
// ../表示向上一层
// ./表示同级目录下
// /表示根目录下的
// XX.htm表示当前目录下的
//把URL转换成绝对地址
//sURL,源地址
//str_fafURL,相对地址
//返回:绝对地址
CString OnConversionURL(CString sURL,CString str_fafURL)
{

 if(sURL.Find(_T(“/”),8)<0)
 {
  sURL +=_T(“/”);
 }
 CString str_activeURL;
 int int_j = 0;
 int i=0;
 str_activeURL = str_fafURL;
 if(str_fafURL.Find(_T(“../”),0)!=-1&&str_fafURL[0]!=’/’)
 {
  while( i<=str_fafURL.GetLength() )
  {
   if( str_fafURL[i] == ‘.’ && str_fafURL[i+1] == ‘.’ && str_fafURL[i+2] == ‘/’ )
   {
    int_j++;
   }
   i++;
  }
  //int_j,../的首位置
  if(str_fafURL[0]==’/’)
  {
   str_fafURL.Delete(0,1);
  }
  str_fafURL.Replace(_T(“../”),_T(“”));
  //设置为同级目录下没有意义
  str_fafURL.Replace(_T(“./”),_T(“”));
  i=0;
  int int_i=0;
  while( i <= sURL.GetLength() )
  {
   if( sURL[i]==’/’ )
   {
    int_i++;
   }
   i++;
  }
  int_i -= int_j;

  if( int_i<3 )
  {
   int_i = 3;
  }

  int int_cour=0;
  for( i=0; i<=sURL.GetLength(); i++)
  {
   if( sURL[i]==’/’ )
   {
    int_cour++;
   }
   if( int_cour==int_i )
   {   
    sURL= sURL.Left(i+1);
    break;
   }
  }
  //容错处理
  if( sURL[sURL.GetLength()-1]!=’/’ )
  { 
   sURL +=”/”;
  }
  sURL += str_fafURL;
  return sURL;
 }
 else if(str_fafURL.Find(_T(“./”),0)!=-1&&str_fafURL[0]!=’/’)
 {
  while( i<=str_fafURL.GetLength() )
  {
   if( str_fafURL[i] == ‘.’ && str_fafURL[i+1] == ‘/’)
   {
    int_j++;
   }
   i++;
  }
  if(str_fafURL[0]==’/’)
  {
   str_fafURL.Delete(0,1);
  }
  str_fafURL.Replace(_T(“./”),_T(“”));
  i=0;
  int int_i=0;
  while( i <= sURL.GetLength() )
  {
   if( sURL[i]==’/’ )
   {
    int_i++;
   }
   i++;
  }
  //int_i -= int_j;

  if( int_i<3 )
  {
   int_i = 3;
  }
  int int_cour=0;
  for( i=0; i<=sURL.GetLength(); i++)
  {
   if( sURL[i]==’/’ )
   {
    int_cour++;
   }
   if( int_cour==int_i+1 )
   {   
    sURL= sURL.Left(i+1);
    break;
   }
  }
  //容错处理
  if( sURL[sURL.GetLength()-1]!=’/’ )
  { 
   sURL +=”/”;
  }
  sURL += str_fafURL;
  return sURL;
 }
 else
 {
  if( str_fafURL[0] ==’/’ )
  {
   int int_b = 0 ;
   for( int a=0; int_b<3 && a<sURL.GetLength(); a++)
   {
    if( sURL[a]==’/’ )
    {
     int_b++;
    }
    if( int_b==3 )
    {
     sURL = sURL.Left(a);
     break;
    }
   }
   sURL += str_fafURL;
  }
  else
  {
   for( int i=sURL.GetLength() ; i> 0 ; i– )
   {
    if( sURL[i] ==’/’ )
    {
     sURL = sURL.Left( i+1 );
     break;
    }
   }
   sURL += str_fafURL;
  }
  return sURL;
 }
}

此条目发表在C++分类目录,贴了, , 标签。将固定链接加入收藏夹。

发表评论