반응형
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 등 이벤트 속성은 별도 필터링
반환값새 문자열 — 원본 유지
반응형
'php' 카테고리의 다른 글
| PHP mb_strlen vs strlen — 한글 글자수와 바이트수 차이 완전 정리 (0) | 2026.06.15 |
|---|---|
| PHP htmlspecialchars — HTML 특수문자 이스케이프 + XSS 방어 완전 정리 (1) | 2026.06.15 |
| PHP str_replace — 문자열 찾아 바꾸기 완전 정리 (0) | 2026.06.15 |
| PHP trim — 문자열 양끝 공백 제거 완전 정리 (0) | 2026.06.15 |
| PHP substr — 문자열 일부 자르기 완전 정리 (0) | 2026.06.15 |
왕진 블로그

댓글