[PHP] DB 입력 or 출력시 따옴표(') 처리하기[PHP] DB 입력 or 출력시 따옴표(') 처리하기

Posted at 2018. 10. 2. 09:46 | Posted in PHP
반응형




addslashes, stripslashes 함수를 이용한 따옴표 처리



PHP에서 문자열에 따옴표 큰 따옴표( " ), 작은 따옴표( ' )가 들어간 내용을 DB에 입력 및 출력시 addslashesstripslashes 함수를 사용한다.

그런데 HTML에 값을 직접 넣지 않고, PHP에서 echo등을 통해 직접 출력하는 경우 문제가 생겨 간단히 정리하고자 한다.


 ① addslashes : 문자열에 따옴표가 삽입된 경우 문자열 앞에 역슬래쉬(\')를 기호를 붙여 사용한다.

 ② stripslashes : addslashes를 사용한 해당 문자열의 역슬래쉬(\') 기호를 제거한다.


단순하지만 아래 출력 코드와 같이 PHP콛 상에서 input 태그에 값을 넣어 사용하는 경우는 아래와 같이 처리하면 된다.




# 소스코드

<?php
    // 테스트할 따옴표가 들어간 문구
    $str = "Rockin' In Rhythm";

    echo $str;
    echo "<br/><hr/><br/>";

    // addslashes를 사용하여 따옴표 앞에 역슬래시를 붙임(\')
    echo "addslashes : ".addslashes($str);
    echo "<br/><hr/><br/>";

    // stripslashes를 사용하여 따옴표 앞에 역슬래시를 제거(\')
    echo "stripslashes  : ".stripslashes($str);
    echo "<br/><hr/><br/>";

    // value값등에 넣을 경우 \"%s\" 식으로 따옴표를 감싸주어서 해결해야 한다.
    echo sprintf("<input type='text' value=\"%s\"/>", stripslashes($str));

?>

<?

// 테스트할 따옴표가 들어간 문구

$str = "Rockin' In Rhythm";


echo $str;

echo "<br/><hr/><br/>";


// addslashes를 사용하여 따옴표 앞에 역슬래시를 붙임(\')

echo "addslashes : ".addslashes($str);

echo "<br/><hr/><br/>";


// stripslashes를 사용하여 따옴표 앞에 역슬래시를 제거(\')

echo "stripslashes  : ".stripslashes($str);

echo "<br/><hr/><br/>";


// value값등에 넣을 경우 \"%s\" 식으로 따옴표를 감싸주어서 해결해야 한다.

echo sprintf("<input type='text' value=\"%s\"/>", stripslashes($str));

?>



출처: http://wickedmagic.tistory.com/580 [사악미소의 현대마법의 공방]

<?

// 테스트할 따옴표가 들어간 문구

$str = "Rockin' In Rhythm";


echo $str;

echo "<br/><hr/><br/>";


// addslashes를 사용하여 따옴표 앞에 역슬래시를 붙임(\')

echo "addslashes : ".addslashes($str);

echo "<br/><hr/><br/>";


// stripslashes를 사용하여 따옴표 앞에 역슬래시를 제거(\')

echo "stripslashes  : ".stripslashes($str);

echo "<br/><hr/><br/>";


// value값등에 넣을 경우 \"%s\" 식으로 따옴표를 감싸주어서 해결해야 한다.

echo sprintf("<input type='text' value=\"%s\"/>", stripslashes($str));

?>



출처: http://wickedmagic.tistory.com/580 [사악미소의 현대마법의 공방]

<?

// 테스트할 따옴표가 들어간 문구

$str = "Rockin' In Rhythm";


echo $str;

echo "<br/><hr/><br/>";


// addslashes를 사용하여 따옴표 앞에 역슬래시를 붙임(\')

echo "addslashes : ".addslashes($str);

echo "<br/><hr/><br/>";


// stripslashes를 사용하여 따옴표 앞에 역슬래시를 제거(\')

echo "stripslashes  : ".stripslashes($str);

echo "<br/><hr/><br/>";


// value값등에 넣을 경우 \"%s\" 식으로 따옴표를 감싸주어서 해결해야 한다.

echo sprintf("<input type='text' value=\"%s\"/>", stripslashes($str));

?>



출처: http://wickedmagic.tistory.com/580 [사악미소의 현대마법의 공방]




# 출력결과




위와같이 input 태그에 value 값으로 넣을경우 \\ 으로 해결할 수 있었다.


단순한 실수 이지만, 생각 이상으로 시간을 잡아먹었던 경우라 정리해 둔다.





반응형
//