程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php addslashes函數

php addslashes函數

編輯:關於PHP編程

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 < end) { 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 < end) { 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又可以做雙字節的低位。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved