2021-01-05

php : 텍스트를 디비에 저장할 때 필요한 글자 치환

 이번에는 텍스트를 디비에 저장할 때 필요한

글자 치환을 해보겠습니다.


디비에 저장할 때 ' 기호와 "기호는 디비 쿼리에서 사용하는 기본형식에 들어가는 기호라서

별도 처리를 해줘야 하는데요

그냥 사용하면 디비 저장시 오류가 날수 있습니다.


그래서

$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() 도 쓸만합니다만...



안녕하세요.

&quot;2020년&quot;이 가고

&#039;2021년&#039;이 왔습니다.

새해에는 모두 건강하시고 복 많이 받으세요~



<?

$t_txt = "안녕하세요.

\"2020년\"이 가고

'2021년'이 왔습니다.

새해에는 모두 건강하시고 복 많이 받으세요~

";


$data = htmlspecialchars($t_txt,  ENT_QUOTES) ;


echo $data ;

// 안녕하세요. "2020년"이 가고 '2021년'이 왔습니다. 새해에는 모두 건강하시고 복 많이 받으세요~

?>



안녕하세요.

&quot;2020년&quot;이 가고

&#039;2021년&#039;이 왔습니다.

새해에는 모두 건강하시고 복 많이 받으세요~


디비에 저장할 때

" 은  &quot;  로

' 은  &#039; 로 저장됩니다.


사용하는 경우에 따라서 다시 원상태로 변환시켜 줘야 하는데요...


https://www.php.net/

사이트에서 살펴보듯이


echo htmlspecialchars_decode($str, ENT_NOQUOTES);


이런 함수로 디코딩 해줄 수 있습니다.

실행해 보겠습니다.

<?

$t_txt = "안녕하세요.

&quot;2020년&quot;이 가고

&#039;2021년&#039;이 왔습니다.

새해에는 모두 건강하시고 복 많이 받으세요~

";


$data = htmlspecialchars_decode($t_txt, ENT_NOQUOTES) ;


echo $data ;

// 안녕하세요. "2020년"이 가고 '2021년'이 왔습니다. 새해에는 모두 건강하시고 복 많이 받으세요~

?>


보이는 건 동일한데요...

html 코드를 보겠습니다.

-----

안녕하세요.

&quot;2020년&quot;이 가고

&#039;2021년&#039;이 왔습니다.

새해에는 모두 건강하시고 복 많이 받으세요~

-----

어 뭔가 아니네요.


ENT_NOQUOTES 이 부분을

ENT_QUOTES  으로 바꾸어 보겠습니다.


-----

<?

// http://www.yms.kr/1.html



$t_txt = "안녕하세요.

&quot;2020년&quot;이 가고

&#039;2021년&#039;이 왔습니다.

새해에는 모두 건강하시고 복 많이 받으세요~

";


$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 코드 자바스크립트코드를 디비에 저장했다 호출할 때는 적합하지 않습니다.

순수한 텍스트를 디비에 저장하고 호출할 때 유용합니다. 이 방법을 강추합니다.






댓글 없음:

댓글 쓰기