返回顶部

收藏

相对url转化为绝对url

更多

<无详细内容>

/************************************************************************/
/*函数名:ReURL2AbURL
/*功   能: 相对url转化为绝对url;  
/*返回值:成功,返回ture;失败,返回false
/************************************************************************/
bool Utility::ReURL2AbURL(
    const string& ab_url, // 绝对url
    string& re_url  // 相对url
)
{
    string domain = "", root = ""; //域名 , 当前目录
    size_t pos = 0;

    if(boost::regex_match( re_url, boost::regex("http(s?)://.*")))//这不是一个相对url,直接返回
        return true;

    domain = Utility::PickDomain(ab_url);//返回格式:http(s)://test.com/
    _ASSERT("" != domain);
    //root 格式:http(s)://test.com/test
    if('/' == ab_url[ab_url.size()-1])
        root = ab_url.substr(0,ab_url.size()-1);        
    else
        root = ab_url;

    if (re_url[0] == '/')
    {   //全局相对路径其实这一段的所谓相对路径,仅仅是指不含有主机名的路径而已。
        //主要特征就是在相对URL的最前面是含有"/"的
        re_url = domain + re_url;
    }
    else
    {
        while ((pos = re_url.find("../")) == 0)
        {
            root = root.substr(0, root.rfind('/'));
            //如果相对url和当前目录层次不配对,会导致root == "http(s?):/"
            _ASSERT(!boost::regex_match( root, boost::regex("http(s?):/")));
            re_url = re_url.substr(pos + 3);
        }
        re_url = root + '/' + re_url;
    }

    return true;
}

标签:c/c++

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. yuer 发表 2018-07-27 08:46:07 coredump之百米之内必有解药
  2. hev 发表 2018-04-28 06:11:38 一个简单、轻量的 Linux 协程实现
  3. hev 发表 2017-10-19 15:56:11 FSH – 助你接入私有网络中的 Linux 终端
  4. gonwan 发表 2015-04-15 08:03:07 Database Access Layer in C++
  5. gonwan 发表 2015-12-28 08:41:13 Basic Usage of Boost MultiIndex Containers
  6. gonwan 发表 2016-01-19 03:37:54 Coroutines in C++/Boost
  7. Haoxiang Li 发表 2017-10-25 20:29:02 MXNet C++ Deployment
  8. yuer 发表 2017-10-20 07:52:47 基于leveldb的持久消息队列SDK
  9. yuer 发表 2017-10-07 07:51:32 c++11完美转发
  10. 博主 发表 2016-09-03 00:00:00 C++编译期类型信息的利用
  11. yuer 发表 2017-09-06 03:03:29 libcurl访问unix socket
  12. yuer 发表 2017-09-07 08:14:58 valgrind检测php扩展的warning

发表评论