使得网页上不会显示
\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;
}