이번에는 텍스트를 디비에 저장할 때 필요한
글자 치환을 해보겠습니다.
디비에 저장할 때 ' 기호와 "기호는 디비 쿼리에서 사용하는 기본형식에 들어가는 기호라서
별도 처리를 해줘야 하는데요
그냥 사용하면 디비 저장시 오류가 날수 있습니다.
그래서
$data = htmlspecialchars($t_text, ENT_QUOTES) ;
$data = addslashes($t_text) ;
등을 사용하지만 제일 추천하는 방식은
$data = eregi_replace("'","´",eregi_replace("\"","˝",$t_text)) ;
이것입니다.
' 을 ´ (특수문자표)로
" 을 ˝ (특수문자표)로 치환했습니다.
이것이 완벽하지 않고
완벽한 방법은 없습니다.
그냥 여러가지 방법중 사용하기 가장 괜찮은 방법입니다.
<?
$t_txt = "안녕하세요.
\"2020년\"이 가고
'2021년'이 왔습니다.
새해에는 모두 건강하시고 복 많이 받으세요~
";
$data = eregi_replace("'","´",eregi_replace("\"","˝",$t_txt)) ;
echo $data ;
// 안녕하세요. ˝2020년˝이 가고 ´2021년´이 왔습니다. 새해에는 모두 건강하시고 복 많이 받으세요~
?>
' 이 ´ (특수문자표)로
" 가 ˝ (특수문자표)로 잘 치환되었습니다.
======================
이하는 참고하세요.
htmlspecialchars() 도 쓸만합니다만...
안녕하세요.
"2020년"이 가고
'2021년'이 왔습니다.
새해에는 모두 건강하시고 복 많이 받으세요~
<?
$t_txt = "안녕하세요.
\"2020년\"이 가고
'2021년'이 왔습니다.
새해에는 모두 건강하시고 복 많이 받으세요~
";
$data = htmlspecialchars($t_txt, ENT_QUOTES) ;
echo $data ;
// 안녕하세요. "2020년"이 가고 '2021년'이 왔습니다. 새해에는 모두 건강하시고 복 많이 받으세요~
?>
안녕하세요.
"2020년"이 가고
'2021년'이 왔습니다.
새해에는 모두 건강하시고 복 많이 받으세요~
디비에 저장할 때
" 은 " 로
' 은 ' 로 저장됩니다.
사용하는 경우에 따라서 다시 원상태로 변환시켜 줘야 하는데요...
https://www.php.net/
사이트에서 살펴보듯이
echo htmlspecialchars_decode($str, ENT_NOQUOTES);
이런 함수로 디코딩 해줄 수 있습니다.
실행해 보겠습니다.
<?
$t_txt = "안녕하세요.
"2020년"이 가고
'2021년'이 왔습니다.
새해에는 모두 건강하시고 복 많이 받으세요~
";
$data = htmlspecialchars_decode($t_txt, ENT_NOQUOTES) ;
echo $data ;
// 안녕하세요. "2020년"이 가고 '2021년'이 왔습니다. 새해에는 모두 건강하시고 복 많이 받으세요~
?>
보이는 건 동일한데요...
html 코드를 보겠습니다.
-----
안녕하세요.
"2020년"이 가고
'2021년'이 왔습니다.
새해에는 모두 건강하시고 복 많이 받으세요~
-----
어 뭔가 아니네요.
ENT_NOQUOTES 이 부분을
ENT_QUOTES 으로 바꾸어 보겠습니다.
-----
<?
// http://www.yms.kr/1.html
$t_txt = "안녕하세요.
"2020년"이 가고
'2021년'이 왔습니다.
새해에는 모두 건강하시고 복 많이 받으세요~
";
$data = htmlspecialchars_decode($t_txt, ENT_QUOTES) ;
echo $data ;
// 안녕하세요. "2020년"이 가고 '2021년'이 왔습니다. 새해에는 모두 건강하시고 복 많이 받으세요~
?>
안녕하세요.
"2020년"이 가고
'2021년'이 왔습니다.
새해에는 모두 건강하시고 복 많이 받으세요~
-----
이제 제대로 디코딩 되었습니다.
=================
htmlspecialchars() 함수로
이렇게 인코딩을 했으면
htmlspecialchars_decode() 함수로
디코딩을 해주어야 합니다.
일일이 신경써서 코딩을 해야하기에
아무래도 좀 불편합니다.
그래서 저는
$data = eregi_replace("'","´",eregi_replace("\"","˝",$t_txt)) ;
처럼...
' 을 ´ (특수문자표)로
" 을 ˝ (특수문자표)로 치환해서 사용합니다.
아 물론 html 코드나 css 코드 자바스크립트코드를 디비에 저장했다 호출할 때는 적합하지 않습니다.
순수한 텍스트를 디비에 저장하고 호출할 때 유용합니다. 이 방법을 강추합니다.
댓글 없음:
댓글 쓰기