Форум — Development Аналог php-функции urlencode и urldencode в Си 0 0 Подскажите аналог php-функции urlencode и urldencode в Си и библиотеки, в которых они содержаться. Требуется закодировать и раскодировать строку. Ссылка
libapreq: http://httpd.apache.org/apreq/ Оно? Teak ★★★★★ (03.08.06 07:03:31 MSK) Показать ответы Ссылка
Ответ на: комментарий от Teak 03.08.06 07:03:31 MSK Это не для внутренних моделей Apache? Есть ли более легкие библиотеки? anonymous (03.08.06 07:06:49 MSK) Показать ответ Ссылка
Ответ на: комментарий от anonymous 03.08.06 07:06:49 MSK > Это не для внутренних моделей Apache? Почему бы тебе самому не посмотреть? :) Может я уже документацию тебе вслух должен прочитать? :)ё > Есть ли более легкие библиотеки? 41 килобайт в установленном виде - это тяжёлая библиотека? Teak ★★★★★ (03.08.06 07:11:10 MSK) Ссылка
Ответ на: комментарий от Teak 03.08.06 07:03:31 MSK Есть ли что-нить в библиотеках libcgi и cgihtml? И если есть, то какие? anonymous (03.08.06 07:24:10 MSK) Показать ответ Ссылка
Ответ на: комментарий от anonymous 03.08.06 07:24:10 MSK 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); } static unsigned char hexchars[] = "0123456789ABCDEF"; char *php_url_encode(char const *s, int len, int *new_length) { register unsigned char c; unsigned char *to, *start; unsigned char const *from, *end; from = (unsigned char*)s; end = from + len; start = to = (unsigned char *) safe_emalloc(3, len, 1); while (from < end) { c = *from++; if (c == ' ') { *to++ = '+'; #ifndef CHARSET_EBCDIC } 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 /*CHARSET_EBCDIC*/ } else if (!isalnum(c) && strchr("_-.", c) == NULL) { /* Allow only alphanumeric chars and '_', '-', '.'; escape the rest */ to[0] = '%'; to[1] = hexchars[os_toascii[c] >> 4]; to[2] = hexchars[os_toascii[c] & 15]; to += 3; #endif /*CHARSET_EBCDIC*/ } else { *to++ = c; } } *to = 0; if (new_length) { *new_length = to - start; } return (char *) start; } int php_url_decode(char *str, int len) { char *dest = str; char *data = str; while (len--) { if (*data == '+') { *dest = ' '; } else if (*data == '%' && len >= 2 && isxdigit((int) *(data + 1)) && isxdigit((int) *(data + 2))) { #ifndef CHARSET_EBCDIC *dest = (char) php_htoi(data + 1); #else *dest = os_toebcdic[(char) php_htoi(data + 1)]; #endif data += 2; len -= 2; } else { *dest = *data; } data++; dest++; } *dest = '\0'; return dest - str; } Valeriy_Onuchin ★★ (03.08.06 11:55:22 MSK) Ссылка