자바스크립트로 문자열에서 html 태그 제거하기

자바스크립트로 사용자가 textarea 에 입력한 내용에서 html 태그를 모두 제거하려고 합니다.

textarea 의 내용을 변수에 담는것은 할 수 있으니 문자열에서 태그를 모두 제거하는 방법 아시면 좀 알려주세요.

예를 들어 

원래 문자열
<div>
<b>안녕하세요.</b> <br />
<hr>
주말 잘 보내세요.
<font size="3">ps. 메일 확인하고 답변주세요.</font>
</div> 
 
html 제거 후 문자열
안녕하세요.
주말 잘 보내세요.
ps. 메일 확인하고 답변주세요.
 

답변 2개

  • 투표순▲ 투표를 가장 많이 받은 순서로 정렬
  • 작성일순최신 작성된 순서로 정렬
(1)
php.js 에 php 의 strip_tags 와 동일하게 작동하는 javascript 함수가 있습니다.

function strip_tags (input, allowed) {
    allowed = (((allowed || "") + "").toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
    var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,
        commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
    return input.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {        return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
    });
}

사용법은 php 의 strip_tags 와 동일합니다.

i 와 b 태그만 허용하고 그 외의 태그는 모두 제거할때 아래와 같이 하면 됩니다.

var str = strip_tags('<p>Kevin</p> <b>van</b> <i>Zonneveld</i>', '<i><b>');

// 'Kevin <b>van</b> <i>Zonneveld</i>'
(2)
아주 간단한 방법~

var StrippedString = OriginalString.replace(/(<([^>]+)>)/ig,""); 

함수로 만들어서 쓰고 싶으시다면 아래같이 하면 되구요.

function strip_tag (str)
{
    return str.replace(/(<([^>]+)>)/ig,"");
}

답변쓰기

관련 post

L

[번역] 자바스크립트 프로그래밍 언어에 대한 연구 (Douglas Crockford 의 A Survey of the JavaScript Programming Language)

L

[번역] 자바스크립트 클래스를 정의하는 3가지 방법 (3 ways to define a JavaScript class)

K

자바스크립트 쿠키 클래스

K

javascript 로 codeigniter uri->segment() 함수 구현하기