php addedlashes関数数最终对应のc関数数:
3244 PHPAPI char *php_addslashes_ex(char *str, int length, int *new_length, int should_free, intignore_sybase TS RMLS_DC)
3245 {
3246 /* 文字列の最大長、最悪の場合の状況 */
3247 char *new_str;
3248 char *ソース、*ターゲット;
3249 文字 *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 ソース = str;
3261 end = ソース + 長さ;
3262 ターゲット = new_str;
3263
3264 if (!ignore_sybase && PG(magic_quotes_sybase)) {
3265 while (ソース < 終了) {
3266 スイッチ (*出典) {
3267 ケース ' ':
3268 *target++ = '\';
3269 *target++ = '0';
3270 休憩;
3271 ケース '':
3272 *target++ = ''';
3273 *target++ = ''';
3274 休憩;
3275 デフォルト:
3276 *target++ = *source;
3277 休憩;
3278 }
3279 ソース++;
3280 }
3281 } else {
3282 while (ソース < 終了) {
3283 スイッチ (*出典) {
3284 ケース ' ':
3285 *target++ = '\';
3286 *target++ = '0';
3287 休憩;
3288 ケース「」:
3289 ケース '"':
3290 ケース '\':
3291 *target++ = '\';
3292 /* ブレークが *意図的に* */
3293 デフォルト:
3294 *target++ = *source;
3295 休憩;
3296 }
3297
3298 ソース++;
3299 }
3300 }
3301
3302 *ターゲット = 0;
3303 *new_length = ターゲット - 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.com本当http://www.bkjia.com/PHPjc/477745.html技術記事 php の addslashes 関数に対応する最後の c 関数は次のとおりです。 3244 PHPAPI char *php_addslashes_ex(char *str, int length, int *new_length, int should_free, intignore_sybase TS RMLS_DC) 3245 { 32...