[PHP] str_replace 를 이용해 역슬래시(백슬래시)를 없애는 방법
(시작하기 전에 아래 본문에서 표시되는 \
은 역슬래시(\)를 나타냄을 알려 드립니다. 아무래도 한글 기반 폰트를 사용하다보니 역슬래시가 제대로 표시되지 않네요.)
요약
- PHP 에서 str_replace 함수를 사용해 역슬래시(\) 를 치환하기 위해서는
- 투입변수로 따옴표에 역슬래시를 두 번 사용해줘야 합니다.
상황
웹사이트 DB 를 직접 이용하기 시작하면서 생각지도 못 했던 문제가 발생했습니다.
프론트 엔드에서 어떤 문자열을 TEXT
형식의 데이터로 DB에 투입하니, '
와 같은 특정 문자에 자동으로 역슬래시(\, 백슬래시)가 따라 붙으면서 입력이 되는 상황이죠. 아무래도 보안 때문인 것 같긴한데, 사실 뭐 DB에 들어가는건 사용자에게 직접 보이는게 아니다 보니까 크게 상관은 없었습니다.
문제는 이걸 다시 꺼내 쓸 때 발생했는데, 단순하게 해당 문자를 PHP
에서 str_replace
함수를 사용해 빈 문자로 치환하면 되겠지? 라고 생각했는데, 이게 잘 안되더라구요.
str_replace
처음에 사용했던 방법은 아래와 같습니다.
참고로 PHP 의 str_replace 함수를 사용하는 방법은 이 포스트를 참고하세요.
str_replace( "\", "", $i->description );
당연하겠지만 문자가 제대로 치환되지 않는 결과가 나옵니다.
아무래도 이 역슬래시가 이스케이프 문자로 사용되다보니 str_replace
함수의 투입 변수를 위해 사용한 따옴표("
)를 날려버려서 해당 함수가 제대로 사용되지 않는 것이죠.
그럼 이걸 어떻게 해결하냐. 바로 아래와 같이 해당 문자를 두 번 사용하면 됩니다.
str_replace( "\\", "", $i->description );
이렇게 하면 역슬래시 앞에 이스케이프 문자를 사용하게 됨으로써 역슬래시를 그대로 투입 변수에 넣어주는 효과를 낼 수 있고, 다행히 DB에서 가져온 TEXT
형식의 데이터에서 역슬래시를 제거한 후 사용자에게 보여줄 수 있게 되었습니다.
별 것 아닌데 자주 쓸 일은 없다 보니 매번 기억이 나지 않아 기록으로 남겨둡니다.
끝.
댓글 남기기