PHP htmlspecialchars() 사용 시 특정 한글 깨짐 현상 해결

 PHP 

PHP htmlspecialchars() 사용 시 특정 한글 깨짐 현상 해결 방법!

 

htmlsepcialchars() 함수를 사용 해도 불구하고 특정 한글이 깨져서 나올 때가 있다.

예를들어 쓔,쌰,햨,혘,큙 등의 일반적이지 않은 한글들

 

1. htmlsepcialchars() 사용방법

 

  • 일반적으로 특수문자 (<,>,$,@등)의 html 코드화(lt,gt등)으로 변환하는문제를 처리해야 할 때 사용한다.
  • PHP5.3 이하 버전에서는 하나의 매개변수 (string)를 필요로 했었는데
  • PHP5.4 이상 버전으로 가면서 4개의 매개변수 (string,flags,encoding,double_encode )를 사용해야 동작한다.
  • 마지막 double_encode 는 필요에 의해 사용하면 된다.
  • 자세한 내용은 여기를 참조
 

PHP: htmlspecialchars - Manual

if your goal is just to protect your page from Cross Site Scripting (XSS) attack, or just to show HTML tags on a web page (showing on the page, for example), then using htmlspecialchars() is good enough and better than using htmlentities().  A minor point

www.php.net

 

 

2.특정 한글(쓔,쌰,쎩,큚 등)의 깨짐 현상 해결

 

  • 필자의 경우 기존 htmlsepcialchars($string)을 PHP고도화작업에 따라 최신화 시켜줘야 했었고
  • 그에따라 아래의 경우로 바꿨음에도 불구하고 특정 한글이 html lt,gt형식의 표현화가 되어 깨지는 현상이 발생했다.
$title ="제목입니다,이쓔"; 
$title = htmlspecialchars($title, ENT_QUOTES, 'ISO-8859-1');
echo $title;
// 결과값
// 제목입니다,이&#50388;
  • 해결하기위해 구글링을 해본 결과, 마지막 double_encode 값이 true로 기본 설정되어있어 발생하는 현상으로
  • 아래와 같이 false 처리를 통해 문제를 해결 할 수 있었다.
$title ="제목입니다,이쓔"; 
$title = htmlspecialchars($title, ENT_QUOTES, 'ISO-8859-1',false);
echo $title;
// 결과값
// 제목입니다,이쓔;

 

 

내용이 유익하셨다면 구독 및 좋아요 클릭 부탁드려요 :)

오늘 하루도 즐거운 하루 보내세요!