> 백엔드 개발 > PHP 튜토리얼 > php addslashes函数_PHP教程

php addslashes函数_PHP教程

WBOY
풀어 주다: 2016-07-14 10:08:50
원래의
1245명이 탐색했습니다.

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...
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿