본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP strip_tags — HTML 태그 제거 완전 정리

by 왕진 2026. 6. 15.
반응형

 

 

Web Development · PHP strip_tags

PHP strip_tags —
HTML 태그를 제거하고 텍스트만 남기기

<a href=...>남가람북스</a><hr><br> → "남가람북스"
시작 오늘 분석할 코드
<?php $string = '<A href="http://www.namgarambooks.co.kr/">남가람북스</A><hr><br>'; $result = strip_tags($string); // HTML 태그 모두 제거 → 안의 텍스트만 남음 print $result; ?>
남가람북스
용어 용어 정리
strip_tags()HTML/PHP 태그를 제거하고 텍스트만 반환
strip"벗겨내다" — 태그를 벗겨내는 동작
텍스트만태그 안의 글자(content)는 유지
두 번째 매개변수허용할 태그 목록 (남길 태그)
vs htmlspecialcharsstrip은 제거, htmlsp는 이스케이프
실무미리보기·검색 인덱스·이메일 본문
한계완벽한 XSS 방어용 X — htmlsp 권장
주석·CDATAPHP 8.0+에서도 함께 제거됨

1 동작 방식
'<A href="...">남가람북스</A><hr><br>' → <A href="..."> 제거 → 남가람북스 유지 (텍스트) → </A> 제거 → <hr> 제거 → <br> 제거 결과: "남가람북스"

2 두 번째 매개변수 — 허용 태그
$html = '<b>굵게</b> <i>기울</i> <script>alert(1)</script>'; strip_tags($html); // "굵게 기울 alert(1)" strip_tags($html, '<b>'); // "<b>굵게</b> 기울 alert(1)" strip_tags($html, ['b', 'i']); // "<b>굵게</b> <i>기울</i> alert(1)"

두 번째 매개변수는 유지할 태그를 지정한다 (제거할 태그가 아니라).


3 XSS 방어로는 부족하다
strip_tags로 모든 XSS를 막을 수는 없다. 허용 태그에 onclick 등 이벤트 속성이 들어가면 위험하고, 일부 우회 기법도 알려져 있다.

사용자 입력을 안전하게 출력하려면 htmlspecialchars가 안전한 기본 선택이다. 풍부한 HTML이 필요하면 HTML Purifier 같은 라이브러리를 쓴다.


 

반응형

 

4 실무 활용
// 게시글 미리보기 $preview = mb_substr(strip_tags($post['content']), 0, 100, "UTF-8") . "..."; // 검색 인덱스에 저장 (태그 없는 텍스트만) $index_text = strip_tags($html); // 일부 서식만 허용 $safe = strip_tags($input, '<p><br><b><i><a>');

5 자주 하는 실수
실수 증상 해결
두 번째 인자에 "제거할 태그" 입력 의도 반대 — 그 태그만 남고 나머지 제거 두 번째 인자는 "유지" 태그
strip_tags로 XSS 완전 차단 일부 우회 가능 htmlspecialchars 또는 HTML Purifier
속성도 보존되리라 기대 허용해도 onclick 등 위험 속성 남음 화이트리스트 필터 활용
한글이 깨진다고 생각 strip_tags는 글자에 손 안 댐 다른 인코딩 문제 의심

핵심 한 줄 요약

strip_tags()HTML/PHP 태그 제거, 텍스트만 남김
두 번째 인자"유지할 태그" 화이트리스트
결과남가람북스 — 링크 텍스트만 남음
XSS 방어불완전 — htmlspecialchars 권장
실무미리보기, 검색 인덱스, 이메일 본문
속성 위험onclick 등 이벤트 속성은 별도 필터링
반환값새 문자열 — 원본 유지
반응형

댓글