[HTTP]_[C/C++]_[获取URL里的域名主体]
来源:互联网 发布:mac日历添加美国节日 编辑:程序博客网 时间:2024/06/07 11:03
场景:
1.有时候需要获取域名主体来做一些记录操作或公司名称记录,比如域名baidu.com域名的主体是baidu.
2.在blog下载工具里 博客下载备份导出工具 需要根据不同的域名主体来调用相应的下载脚本,域名主体同时也是包名。
#include <iostream>#include <stdlib.h>#include <string.h>#include <string>#include "domain.h"#include "assert.h"using namespace std;char* GetDomainTopPart(const char* url1){cout << url1 << endl;//1.获取域名char* url = strdup(url1);const char* http_str = "http://";char slash = '/';char dot = '.';char* http_pr = strstr(url,http_str);char* start = url;if (http_pr == url){start = url+strlen(http_str);}char* slash_pr = strchr(start,slash);*slash_pr = 0;//1.从第2部分开始查找char* domain_top = NULL;char* first_dot = strrchr(start,dot);*first_dot = 0;char* second_dot = strrchr(start,dot);if(second_dot){*first_dot = dot;char* second_part = strstr(gDomainPart,second_dot);if (second_part){*second_dot = 0;char* third_dot = strrchr(start,dot);if (third_dot){domain_top = strdup(third_dot+1);}else{domain_top = strdup(start);}}else{*first_dot = 0;domain_top = strdup(second_dot+1);}}else{*first_dot = 0;domain_top = strdup(start);}free(url);return domain_top;}int main(int argc, char const *argv[]){cout << gDomainPart << endl;cout << argv[0] << endl;char* domain_top = GetDomainTopPart("http://blog.csdn.net/infoworld/1.html");assert(!strcmp(domain_top,"csdn"));free(domain_top);domain_top = GetDomainTopPart("blog.csdn.net/infoworld/1.html");assert(!strcmp(domain_top,"csdn"));free(domain_top);domain_top = GetDomainTopPart("http://tomcat-oracle.iteye.com/blog/2020634");assert(!strcmp(domain_top,"iteye"));free(domain_top);domain_top = GetDomainTopPart("http://www.blogjava.net/paulwong/archive/2014/02/23/410200.html");assert(!strcmp(domain_top,"blogjava"));free(domain_top);domain_top = GetDomainTopPart("http://blogjava.net/paulwong/archive/2014/02/23/410200.html");assert(!strcmp(domain_top,"blogjava"));free(domain_top);domain_top = GetDomainTopPart("http://test.com.cn/paulwong/archive/2014/02/23/410200.html");assert(!strcmp(domain_top,"test"));free(domain_top);domain_top = GetDomainTopPart("http://www.test.com.cn/paulwong/archive/2014/02/23/410200.html");assert(!strcmp(domain_top,"test"));free(domain_top);return 0;}
域名后缀头文件 domain.h:
static const char* gDomainPart = "" ";.com" ";.net" ";.org" ";.hk" ";.cn" ";.com.cn" ";.net.cn" ";.org.cn" ";.gov.cn" ";.biz" ";.info" ";.cc" ";.tv" ";.mobi" ";.name" ";.asia" ";.tw" ";.sh" ";.ac" ";.io" ";.tm" ";.travel" ";.ws" ";.us" ";.sc" ";.mn" ";.ag" ";.vc" ";.la" ";.bz" ";.in" ";.cm" ";.co" ";.tel" ";.me" ";.pro" ";.com.hk" ";.com.tw" ";.pw;";
输出:
;.com;.net;.org;.hk;.cn;.com.cn;.net.cn;.org.cn;.gov.cn;.biz;.info;.cc;.tv;.mobi;.name;.asia;.tw;.sh;.ac;.io;.tm;.travel;.ws;.us;.sc;.mn;.ag;.vc;.la;.bz;.in;.cm;.co;.tel;.me;.pro;.com.hk;.com.tw;.pw;C:\workspace\script-test\test_blog\src\test_domainhttp://blog.csdn.net/infoworld/1.htmlblog.csdn.net/infoworld/1.htmlhttp://tomcat-oracle.iteye.com/blog/2020634http://www.blogjava.net/paulwong/archive/2014/02/23/410200.htmlhttp://blogjava.net/paulwong/archive/2014/02/23/410200.htmlhttp://test.com.cn/paulwong/archive/2014/02/23/410200.htmlhttp://www.test.com.cn/paulwong/archive/2014/02/23/410200.html[Finished in 0.1s]
0 0
- [HTTP]_[C/C++]_[获取URL里的域名主体]
- [HTTP]_[C/C++]_[获取html页面里的image src属性值的实际图片路径]
- [HTTP]_[C/C++]_[解析URL的转义字符百分比字符串]
- HTTP协议深入学习_协议主体
- [并发并行]_[C/C++]_[C++标准库里的线程安全问题]
- C#_获取汉字拼音
- C#_获取汉字拼音
- [C/C++]_[初级]_[获取Windows系统的位数32位或64位]
- c+_+
- [C/C++标准库]_[初级]_[标准库里提供的排序算法]
- C#_在按钮存在的状态获取按键消息
- c++_获取当前程序(EXE)所在的路径
- [C/C++]_[初级]_[把一个图片的数据存入到std::string里,使用_wfopen生成二进制文件]
- [C/C++]_[从netbeans里提取的通用构建C++项目的Makefile文件]
- [C/C++标准库]_[初级]_[获取文件的所在目录跨平台实现]
- C#_获取 SQL服务器列表
- [C/C++不常见语法特性]_[C语言里的共用体说明]
- C/C++_
- ubuntu安装dropbox
- 三星7存平板 Galaxy Table 3 T210如何进入安全模式
- 关于301重定向,以及做重定向中需要注意的
- IOS语言Object-c语言随笔(四)
- XAMPP与VMWARE端口占用冲突
- [HTTP]_[C/C++]_[获取URL里的域名主体]
- 翻译
- 配置hadoop 使用fair scheduler调度器
- 第二次作业
- 给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数
- Android 截屏问题总结
- Xcode 5真机调试
- 求逆转一个整数的二进制表示
- PopupWindow listview setOnItemClickListener ExpandableListView