- 浏览: 163058 次
- 性别:
- 来自: 南京
最新评论
偶然发现,网上已经有很多对PHP的URL编解码函数提取的文章,但我还是想自己提取一次。看到网上那些文章,居然还保留着无用的代码片段,例如:os_toassii 那一段。
URL解码函数:
/* {{{ php_htoi */ static int php_htoi(char *s) { int value; int c; c = ((unsigned char *)s)[0]; if (isupper(c)) c = tolower(c); value = (c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10) * 16; c = ((unsigned char *)s)[1]; if (isupper(c)) c = tolower(c); value += c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10; return (value); } /* }}} */ /* {{{ URL解码,提取自PHP 5.2.17 用法:string urldecode(string str_source) 时间:2012-8-14 By Dewei */ string urldecode(string &str_source) { char const *in_str = str_source.c_str(); int in_str_len = strlen(in_str); int out_str_len = 0; string out_str; char *str; str = _strdup(in_str); char *dest = str; char *data = str; while (in_str_len--) { if (*data == '+') { *dest = ' '; } else if (*data == '%' && in_str_len >= 2 && isxdigit((int) *(data + 1)) && isxdigit((int) *(data + 2))) { *dest = (char) php_htoi(data + 1); data += 2; in_str_len -= 2; } else { *dest = *data; } data++; dest++; } *dest = '\0'; out_str_len = dest - str; out_str = str; free(str); return out_str; } /* }}} */
URL编码函数:
/* {{{ URL编码,提取自PHP 用法:string urlencode(string str_source) 说明:仅不编码 -_. 其余全部编码,空格会被编码为 + 时间:2012-8-13 By Dewei */ string urlencode(string &str_source) { char const *in_str = str_source.c_str(); int in_str_len = strlen(in_str); int out_str_len = 0; string out_str; register unsigned char c; unsigned char *to, *start; unsigned char const *from, *end; unsigned char hexchars[] = "0123456789ABCDEF"; from = (unsigned char *)in_str; end = (unsigned char *)in_str + in_str_len; start = to = (unsigned char *) malloc(3*in_str_len+1); while (from < end) { c = *from++; if (c == ' ') { *to++ = '+'; } else if ((c < '0' && c != '-' && c != '.') || (c < 'A' && c > '9') || (c > 'Z' && c < 'a' && c != '_') || (c > 'z')) { to[0] = '%'; to[1] = hexchars[c >> 4]; to[2] = hexchars[c & 15]; to += 3; } else { *to++ = c; } } *to = 0; out_str_len = to - start; out_str = (char *) start; free(start); return out_str; } /* }}} */ /* {{{ URL编码CString版,提取自PHP 5.2.17 用法:CString urlencode(CString str_source) 说明:仅不编码 -_. 其余全部编码,空格会被编码为 + 时间:2012-8-13 By Dewei */ CString urlencode(CString &str_source) { char const *in_str = str_source; int in_str_len = strlen(in_str); int out_str_len = 0; CString out_str = '\0'; register unsigned char c; unsigned char *to, *start; unsigned char const *from, *end; unsigned char hexchars[] = "0123456789ABCDEF"; from = (unsigned char *)in_str; end = (unsigned char *)in_str + in_str_len; start = to = (unsigned char *) malloc(3*in_str_len+1); while (from < end) { c = *from++; if (c == ' ') { *to++ = '+'; } else if ((c < '0' && c != '-' && c != '.') || (c < 'A' && c > '9') || (c > 'Z' && c < 'a' && c != '_') || (c > 'z')) { to[0] = '%'; to[1] = hexchars[c >> 4]; to[2] = hexchars[c & 15]; to += 3; } else { *to++ = c; } } *to = 0; out_str_len = to - start; out_str = (char *) start; free(start); return out_str; }
发表评论
-
C风格日期时间在std c++中使用备忘
2013-10-25 17:47 1255//包含的头文件 #include <ctime&g ... -
查找HTML代码“超级链接”中含有域名的函数
2013-10-22 17:48 1940需求:在一段HTML里寻找超级链接中(正文文本)域名。 ... -
纯C实现MD5加密
2013-10-21 11:17 2207序 真是天下文章一大抄,国内的牛人们在抄国外的开源 ... -
libcurl 编译支持gzip、ssl、c-ares
2013-10-17 08:50 8538使用CURLOPT_NOSIGNAL后必须启用异步DNS,因 ... -
VC获取windows 安装内存(RAM)
2013-10-11 16:10 1429//起因:在某些机器上无法使用GlobalMemorySt ... -
Visual Studio 2010/2013 string对UTF8的支持总结
2013-09-12 00:13 11376VisualStudio 2010 SP1环境 1 ... -
stringstream 的.str()正确用法和清空操作
2013-09-11 14:53 7246streamstring在调用str()时,会返回临时的st ... -
C语言实现 strpos 查找字符串首次出现位置
2012-08-17 19:50 9551今天又写了个函数,查找字符串首次出现位置,以此作为记录: / ... -
C/C++ 字符串为空判断 效率比较
2012-08-16 19:22 21653为了测试判断字符串为空的效率,今天特意做了一个测试。得出以下结 ... -
VC++ 编译libcurl 支持SSL,GZIP
2012-07-12 22:58 17248由于网上下载的 libcurl ... -
VC++调用libcurl的VC库使用详解
2012-06-30 17:11 370591、下载官方库。 地址:http://curl.haxx ... -
jsoncpp 简明学习(含类似php的print_r函数)
2012-06-30 12:59 2839C++ 处理JSON学习记录,今天整理了一下,把测试代码全文发 ... -
C/C++ 文件读写操作
2012-06-25 00:09 2200标准C++ 读写文件内容: //标准C++ 读文件 ... -
C++ 字符串操作学习
2012-06-24 17:05 4484为什么std::string 连最常用,最基本的功能也没有 ... -
char*, string, CString, String^的相互转换
2012-06-23 14:17 5806从char*转换: char ...
相关推荐
C++URL编码和解码
华为c++编码规范和安全编码规范最新3.1版本 华为c++编码规范和安全编码规范最新3.1版本 华为c++编码规范和安全编码规范最新3.1版本 华为c++编码规范和安全编码规范最新3.1版本 华为c++编码规范和安全编码规范最新3.1...
使用VS软件 C/C++读取当前文件夹下文本文档内指定行并输出到新的文本文档中,其中代码是提取文本文档中特定行到最后的数据,也有提取的行是有规律的行。其中代码是以提取多个txt第14行到最后的数据并整合到一个txt中...
c /c++安全编码规范v3.1.odt
华为C/C++的编码规范,刚开始编程的程序员们学习一下华为的编码风格哦!
C/C++ Base64编解码开源库,第三方开源库,亲测可用;
C语言/C++集成开发环境 Dev-C++。一款优秀的C/C++集成开发软件。
Dev-cpp5.4.0及API帮助文档 2018年蓝桥杯C语言/c++ 需要的同学可以下载使用
#二维码(QRcode)生成算法 C语言/C++ 源码 1. 根据输入字符串识别编码模式; 2. 根据输入字符串长度选择合适的QRcode版本; 3. 将编码转换为二进制位流表示为数据码字; 4. 使用多项式生成纠错码; 5. 将数据码和...
C语言/C++ 烟花表白代码 C语言/C++ 烟花表白代码 C语言/C++ 烟花表白代码 C语言/C++ 烟花表白代码
C语言/C++基础之爱心源码,适合初学C语言/C++的小伙伴学习研究,博客中有对应的讲解和演示,避免走弯路,费时费力。也真心希望能够帮助正在苦学C语言/C++ 程序设计的小伙伴们,你们的成长是我最大的幸福
C++RS编码解码.cppC++RS编码解码.cppC++RS编码解码.cppC++RS编码解码.cpp
c/c++中文帮助文档(API),包含c和c++所有的库函数
c语言/c++/qt图形界面
C语言/C++基础之爱心程序源码,适合初学C语言/C++的小伙伴学习研究,博客中有对应的讲解和演示,避免走弯路,费时费力。也真心希望能够帮助正在苦学C语言/C++ 程序设计的小伙伴们,你们的成长是我最大的幸福
C/C++ API 帮助文档大全(中文,chm格式),解压后双击即可打开,如果打开的时候乱码,需改ie的编码格式为:“自动选择”
C语言/C++基础之冰墩墩源码,适合初学C语言/C++的小伙伴学习研究,博客中有对应的讲解和演示,避免走弯路,费时费力。也真心希望能够帮助正在苦学C语言/C++ 程序设计的小伙伴们,你们的成长是我最大的幸福
规范本身应该是个规定,但C/C++在编码上并没有这样的规定,凡符合C/C++语法的就是合格的代码,但符合C/C++语法的代码不一定是优秀的代码,要对一些不良行为做约定. 代码本身也可能会进行合作研发或后期维护,那么一...
C语言/C++基础之跨年烟花代码,适合初学C语言/C++的小伙伴学习研究,博客中有对应的讲解和演示,避免走弯路,费时费力。也真心希望能够帮助正在苦学C语言/C++ 程序设计的小伙伴们,你们的成长是我最大的幸福