php addslashes函数最终对应的c函数为:
3244 PHPAPI char *php_addslashes_ex(char *str, int length, int *new_length, int should_free, int ignore_sybase TS RMLS_DC)
3245 {
3246 /* maximum string length, worst case situation */
3247 char *new_str;
3248 char *source, *target;
3249 char *end;
3250 int local_new_length;
3251
3252 if (!new_length) {
3253 new_length = &local_new_length;
3254 }
3255 if (!str) {
3256 *new_length = 0;
3257 return str;
3258 }
3259 new_str = (char *) safe_emalloc(2, (length ? length : (length = strlen(str))), 1);
3260 source = str;
3261 end = source + length;
3262 target = new_str;
3263
3264 if (!ignore_sybase && PG(magic_quotes_sybase)) {
3265 while (source
3266 switch (*source) {
3267 case '\0':
3268 *target++ = '\\';
3269 *target++ = '0';
3270 break;
3271 case '\'':
3272 *target++ = '\'';
3273 *target++ = '\'';
3274 break;
3275 default:
3276 *target++ = *source;
3277 break;
3278 }
3279 source++;
3280 }
3281 } else {
3282 while (source
3283 switch (*source) {
3284 case '\0':
3285 *target++ = '\\';
3286 *target++ = '0';
3287 break;
3288 case '\'':
3289 case '\"':
3290 case '\\':
3291 *target++ = '\\';
3292 /* break is missing *intentionally* */
3293 default:
3294 *target++ = *source;
3295 break;
3296 }
3297
3298 source++;
3299 }
3300 }
3301
3302 *target = 0;
3303 *new_length = target - new_str;
3304 if (should_free) {
3305 STR_FREE(str);
3306 }
3307 new_str = (char *) erealloc(new_str, *new_length + 1);
3308 return new_str;
3309 }
从上面看addslashes函数处理的是单字节的字节。
但是gbk编码是双字节的。而且5c又可以做双字节的低位。
http://www.bkjia.com/PHPjc/477745.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/477745.htmlTechArticlephp addslashes函数最终对应的c函数为: 3244 PHPAPI char *php_addslashes_ex(char *str, int length, int *new_length, int should_free, int ignore_sybase TS RMLS_DC) 3245 { 32...
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn