개발/php

[php] DB 텍스트 특수문자 (<, >, &, ", ' 등) 인식 / html 변환

반응형

 

DB 데이터 자체에는 특수문자를 포함한 데이터가 잘 들어가지는데, 불러올 때 꺽쇠나 특수문자가 들어간 부분은 삭제되고 보여지는 오류가 있어 해결할 수 있는 방법을 알아보았다.

<, >를 태그로 인식하지 않게 하기 위해서는 htmlspecialchars() 함수를 써주면 된다.

 

htmlspecialchar()

PHP 4, PHP 5, PHP 7, PHP 8 사용가능

 

어떤 문자들은 HTML에서 특별한 정의를 지니는데 그 의미를 보존하려면 HTML엔티티로 표현해야한다. 이 함수는 이러한 변환을 거친 문자열을 반환해준다. 

Character Replacement
& (앰퍼샌드) &amp;
" (쌍따옴표) &quot;
' (따옴표) &#039
< (부등호) &it;
> (부등호) &gt;

 

 

사용예시

[예시코드1]

$entity= "<b>내용내용</b>";
echo htmlspecialchars($entity);

 

[결과1] : <b>를 태그로 인식하지 않고 그대로 보여준다.

<b>내용내용</b>

 

 

[예시코드2]

$entity= "<title>";
echo htmlspecialchars($entity);

 

[결과2] : <title>를 태그로 인식하지 않고 그대로 보여준다.

<title>

 

 

 

변수의 경우 이런식으로 직접 넣어 사용 가능하다.

 

<?php echo htmlspecialchars($row['wr_5']);?>

 

 

nl2br함수와 함께 사용 하는 경우

<?php echo nl2br(htmlspecialchars($row['wr_5']));?>

 

 

 

 

 

참고 : https://www.php.net/manual/en/function.htmlspecialchars.php

 

PHP: htmlspecialchars - Manual

One MUST specify ENT_HTML5 in addition to double_encode=false to avoid double-encoding.The reason is that contrary to the documentation, double_encode=false will NOT unconditionally and globally prevent double-encoding of ALL existing entities. Crucially,

www.php.net

 

 

반응형