- 浏览: 164686 次
- 性别:
- 来自: 南京
最新评论
偶然发现,网上已经有很多对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 1317//包含的头文件 #include <ctime&g ... -
查找HTML代码“超级链接”中含有域名的函数
2013-10-22 17:48 1979需求:在一段HTML里寻找超级链接中(正文文本)域名。 ... -
纯C实现MD5加密
2013-10-21 11:17 2248序 真是天下文章一大抄,国内的牛人们在抄国外的开源 ... -
libcurl 编译支持gzip、ssl、c-ares
2013-10-17 08:50 8687使用CURLOPT_NOSIGNAL后必须启用异步DNS,因 ... -
VC获取windows 安装内存(RAM)
2013-10-11 16:10 1475//起因:在某些机器上无法使用GlobalMemorySt ... -
Visual Studio 2010/2013 string对UTF8的支持总结
2013-09-12 00:13 11548VisualStudio 2010 SP1环境 1 ... -
stringstream 的.str()正确用法和清空操作
2013-09-11 14:53 7338streamstring在调用str()时,会返回临时的st ... -
C语言实现 strpos 查找字符串首次出现位置
2012-08-17 19:50 9644今天又写了个函数,查找字符串首次出现位置,以此作为记录: / ... -
C/C++ 字符串为空判断 效率比较
2012-08-16 19:22 21711为了测试判断字符串为空的效率,今天特意做了一个测试。得出以下结 ... -
VC++ 编译libcurl 支持SSL,GZIP
2012-07-12 22:58 17319由于网上下载的 libcurl ... -
VC++调用libcurl的VC库使用详解
2012-06-30 17:11 371761、下载官方库。 地址:http://curl.haxx ... -
jsoncpp 简明学习(含类似php的print_r函数)
2012-06-30 12:59 2879C++ 处理JSON学习记录,今天整理了一下,把测试代码全文发 ... -
C/C++ 文件读写操作
2012-06-25 00:09 2241标准C++ 读写文件内容: //标准C++ 读文件 ... -
C++ 字符串操作学习
2012-06-24 17:05 4553为什么std::string 连最常用,最基本的功能也没有 ... -
char*, string, CString, String^的相互转换
2012-06-23 14:17 5883从char*转换: char ...
相关推荐
华为c++编码规范和安全编码规范最新3.1版本 华为c++编码规范和安全编码规范最新3.1版本 华为c++编码规范和安全编码规范最新3.1版本 华为c++编码规范和安全编码规范最新3.1版本 华为c++编码规范和安全编码规范最新3.1...
C++作为一门强大的系统级编程语言,虽然没有内置的URL编码和解码函数,但开发者可以借助标准库和第三方库来实现这些功能。本文将深入探讨C++中如何进行URL编码和解码。 URL(Uniform Resource Locator)是互联网上...
c /c++安全编码规范v3.1.odt
在这个特定的C/C++实现中,我们聚焦于卷积码的解码过程。 卷积码是通信系统中常用的前向错误纠正(FEC)编码方法,它通过在原始数据上施加一系列线性运算来产生冗余位,从而提高信息传输的可靠性。Viterbi算法是...
《华为C/C++编码规范详解》 在编程领域,代码质量是软件工程的生命线,而良好的编码规范则是保障代码质量的重要基石。华为作为全球领先的ICT解决方案提供商,对代码规范有着严谨的要求,其C/C++编码规范是业界广泛...
C++是C语言的扩展,引入了面向对象编程的概念。在编程过程中,理解并有效地使用库函数是至关重要的,因为它们提供了标准功能,可以帮助开发者节省时间,减少错误,并提高代码的可读性和可维护性。 API,全称为...
#二维码(QRcode)生成算法 C语言/C++ 源码 1. 根据输入字符串识别编码模式; 2. 根据输入字符串长度选择合适的QRcode版本; 3. 将编码转换为二进制位流表示为数据码字; 4. 使用多项式生成纠错码; 5. 将数据码和...
C++RS编码解码.cppC++RS编码解码.cppC++RS编码解码.cppC++RS编码解码.cpp
总之,C/C++中的短信编解码涉及到编码集的转换、短信分割重组、以及特定的协议处理。通过掌握这些知识,开发者可以创建高效、可靠的短信通信功能,无论是在手机应用、服务器后台还是嵌入式系统中。
C语言/C++基础之冰墩墩源码,适合初学C语言/C++的小伙伴学习研究,博客中有对应的讲解和演示,避免走弯路,费时费力。也真心希望能够帮助正在苦学C语言/C++ 程序设计的小伙伴们,你们的成长是我最大的幸福
官方介绍:原名《Turbo C/C++ for Windows 集成实验与学习环境》,支持最新操作系统WINDOWS 7,它是从事一线教学的大学教师根据C/C++ 初学者的特点,量身定制的一个简单易用的 C/C++程序设计学习与实验软件(支持TC2/...
C语言/C++基础之爱心源码,适合初学C语言/C++的小伙伴学习研究,博客中有对应的讲解和演示,避免走弯路,费时费力。也真心希望能够帮助正在苦学C语言/C++ 程序设计的小伙伴们,你们的成长是我最大的幸福
这个文档压缩包包含普通C/C++中文文档和蓝桥杯比赛时用的文档,C/C++中文文档是最新版,支持到C++20和C18,且包含以前版本的内容。蓝桥杯蓝桥杯C/C++组用的文档比正常文档更简略,但包含了ASCII码表。
C语言/C++基础之爱心程序源码,适合初学C语言/C++的小伙伴学习研究,博客中有对应的讲解和演示,避免走弯路,费时费力。也真心希望能够帮助正在苦学C语言/C++ 程序设计的小伙伴们,你们的成长是我最大的幸福
6. **C库的C++封装**:C++对C库中的函数进行了封装,如头文件和分别对应C语言的和,使得C++代码能以更现代的方式来使用这些函数。 7. **C++11及后续版本的新特性**:从C++11开始,C++引入了一系列新特性,如lambda...
C/C++字符编码转换
c语言/c++/qt图形界面
在C/C++编程环境中,音视频编解码是一项复杂但至关重要的技术,广泛应用于多媒体通信、游戏、在线教育、视频会议等领域。本压缩包提供的"TestFor_AVCodec"示例程序,旨在帮助开发者掌握音视频编解码的核心原理和实践...
规范本身应该是个规定,但C/C++在编码上并没有这样的规定,凡符合C/C++语法的就是合格的代码,但符合C/C++语法的代码不一定是优秀的代码,要对一些不良行为做约定. 代码本身也可能会进行合作研发或后期维护,那么一...