使得網頁上不會顯示
\x0a\x0a \x0a \x0a \x0a \x0a
類似的字符
static int ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
te_escape_isDec(char *ptr, unsigned int len) ? ? ? ? ? ? ? ? ? ? ? ? ??{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? char ? ? ? ? ? ?*temp = ptr; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? char ? ? ? ? ? ?c = '\0'; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? int ? ? ? ? ? ? flag = -1; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? while ((c = *temp++)!= '\0' && len-->0) { ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? if ((c<'0'||c>'9') && (c<'A' || c>'F')&&(c<'a' || c>'f')) { ? ??
? ? ? ? ? ? flag = -1; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? flag = 0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? } ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? return flag; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
} ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
int ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
te_escape_convert_dec(char *src, char *dst, int *srcLen) ? ? ? ? ? ? ? ? ? ? ?
{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? const char ? ? ?*substr = "\\x"; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? int ? ? ? ? ? ? sublen , declen, totalLen; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? int ? ? ? ? ? ? stringlen = 0, tmpLen, dstLen = 0; ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? char ? ? ? ? ? ?*curPointer = NULL, *prePointer = NULL; ? ? ? ? ? ? ? ? ? ??
? ? char ? ? ? ? ? ?*dstPointer = NULL; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? unsigned int ? ?c = 0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? /*substring length and decimal string length*/ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? sublen = strlen(substr); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? declen = strlen("EE"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? totalLen = strlen("\\xEE"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? /*initialize*/ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?stringlen = *srcLen; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? prePointer = curPointer = src; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? dstPointer = dst; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? /*traverse src*/ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? while (stringlen > 0) { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? if ((curPointer = strstr(prePointer, substr)) == NULL) { ? ? ? ? ? ? ? ?
? ? ? ? ? ? strcpy(dstPointer + dstLen, prePointer); ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? tmpLen = strlen(prePointer);
? ? ? ? ? ? tmpLen = tmpLen==0?1:tmpLen;
? ? ? ? ? ? dstLen += tmpLen; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? stringlen -= tmpLen; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? prePointer += tmpLen; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? strncpy(dstPointer + dstLen, prePointer, curPointer-prePointer);
? ? ? ? ? ? dstLen += (curPointer-prePointer); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? stringlen -= (curPointer-prePointer);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? if (te_escape_isDec(curPointer+sublen, declen) >= 0) { ? ? ?
? ? ? ? ? ? ? ? sscanf(curPointer, "\\x%02x", &c); ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? memcpy(dstPointer + dstLen, &c, sizeof(char)); ? ? ? ? ??
? ? ? ? ? ? ? ? dstLen += sizeof(char); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? stringlen -= totalLen; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? curPointer += totalLen; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? memcpy(dstPointer + dstLen, curPointer, sublen); ? ? ? ?
? ? ? ? ? ? ? ? dstLen += sublen; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? stringlen -= sublen; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? curPointer += sublen; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? prePointer = curPointer; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? } ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? // tail operator ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? *srcLen = dstLen; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? *(dstPointer+dstLen) = '\0'; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? return 0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
}