2008년 1월 1일 화요일

htmlspecialchars()

PHP의 htmlspecialchars() 함수는 html에서 사용되면 안되는(html 태그로 인식되거나 html, js에서 문제가 될 수 있는 문자열)들을 변환해주는 함수입니다. (변환되는 항목은 php manual을 참고)
string htmlspecialchars ( string $string [, int $quote_style [, string $charset [, bool $double_encode ]]] )
첫 번째 인자는 변환할 문자열을 받구요.
두 번째 인자는 ' 또는 " (single quote 또는 double quote)를 어떻게 처리할 지에 대한 여부를 결정합니다.
  • ENT_COMPAT - " (double quote)만 변환합니다.
  • ENT_QUOTES - '와 "(single, double quote) 모두 변환합니다.
  • ENT_NOQUOTES - 아무것도 변환하지 않습니다. (quote에 대해서)
세 번째 인자는 변환 결과에 대한 charset이며
네 번째 인자는 인자로 받는 문자열에 html 태그가 있는 경우 이를 변환할 지 말지에 대한 flag를 받습니다.

htmlspecialchars()와 반대되는 함수인 htmlspecialchars_decode()도 있습니다. 역으로 변환했던 내용들을 다시 변환해줍니다. 첫 번째, 두 번째 인자는 htmlspecialchars()와 동일합니다.
string htmlspecialchars_decode ( string $string [, int $quote_style ] )
만약, 주어진 문자열이 htmlspecialchars()로 변환 되었을 수도 있고 아닐 수도 있는 경우에 정상적으로 페이지를 보여주려면 어떻게 해야할까요?

정답(?): htmlspecialchars_decode()를 호출해 준 다음에 다시 htmlspecialchars()를 호출해줍니다. (입력된 태그를 태그로 처리한다면 답은 아니겠죠;;;;;;;;)

관련자료

댓글 없음:

댓글 쓰기