오늘의 IT/PHP

[PHP] 따옴표 처리 함수 <addslashes/stripslashes>

오늘의 대장 2023. 2. 7. 23:38
반응형

addslashes(이스케이프 할 문자열)

홑따옴표('), 겹따옴표("), 백슬래시(\), NUL(NULL 바이트) 문자 [ : 보통 DB 질의 등에서 처리할 필요가 있는 문자] 앞에 백슬래시를 붙인 문자열을 반환함

PHP는 기본적으로 magic_quotes_gpc 설정이 ON 임

magic_quotes_gpc 설정이란?

GPC (Get/Post/Cookie) 작동의 magic_quotes 상태를 설정함
magic_quotes가 on이면, 모든 ' (작은따옴표), " (큰 따옴표), \ (백슬래시), NUL은 자동적으로 백슬래시로 이스케이프 됨

해당 설정을 통해 이스케이프 된 문자열이 addslashes를 사용하면 2번 이스케이프 됨 -> 문제 있음(오류 삐삐)

해당 설정이 켜져 있는지는 get_magic_quotes_gpc() 함수로 확인 가능!!

$str = "Hi I'm 대장";
echo addslashes($str);

결과

Hi I\'m 대장

 

stripslashes(백슬래시 처리를 제거할 문자열).

백슬래시 처리를 제거한 문자열을 반환

magic_quotes_sybase가 켜져 있으면, 백슬래시는 처리되지 않고, 작은따옴표를 하나로 교체함.

magic_quotes_sybase 설정이란?

sybase (SAP에서 제공하는 관계형 데이터베이스) 사용자의 정상적인 DB 접속을 위해 만들어짐
해당 기능은 magic_quotes_gpc 설정이 켜져 있어도 작동하지 않음

\' -----> '  로 반환

* 이중 백슬래시라면 \\    ----> \ 로 반환함

$str = "Hi I\'m 대장";
echo stripslashes($str);

결과

Hi I'm 대장

 

반응형