跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

php addslashes函数

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;立即学习“PHP免费学习笔记(深入)

”;

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 ' ':3268                     *target++ = '\';3269                     *target++ = '0';3270                     break;3271                 case ''':3272                     *target++ = ''';3273                     *target++ = ''';3274                     break;3275                 default:3276                     *target++ = *source;3277                     break;3278             }PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。

下载3279             source++;3280         }3281     } else {3282         while (source 3283             switch (*source) {3284                 case ' ':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又可以做双字节的低位。

相关文章