Heim >Backend-Entwicklung >PHP-Tutorial >php addslashes函数_PHP教程

php addslashes函数_PHP教程

WBOY
WBOYOriginal
2016-07-14 10:08:501241Durchsuche

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又可以做双字节的低位。

www.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