JavaScript 문자열에서 HTML 태그를 삭제하는 방법
JavaScript 문자열에서 HTML을 삭제하려면 어떻게 해야 합니까?
cleanText = strInputCode.replace(/<\/?[^>]+(>|$)/g, "");
이 웹 사이트(web.acheive)에서 추출한 것입니다.
이 regex는 다음을 찾습니다.<
, 옵션의 슬래시/
, 1개 또는 여러 개의 문자가 아닌>
, 다음 중 하나>
또는$
(행의 끝)
예:
'<div>Hello</div>' ==> 'Hello'
^^^^^ ^^^^^^
'Unterminated Tag <b' ==> 'Unterminated Tag '
^^
하지만 방탄은 아닙니다.
'If you are < 13 you cannot register' ==> 'If you are '
^^^^^^^^^^^^^^^^^^^^^^^^
'<div data="score > 42">Hello</div>' ==> ' 42">Hello'
^^^^^^^^^^^^^^^^^^ ^^^^^^
다른 사용자가 응용 프로그램을 해제하려고 하면 이 정규식이 사용자를 보호하지 않습니다.입력 형식을 이미 알고 있는 경우에만 사용하십시오.지식이 있고 대부분 제정신인 다른 사람들이 지적했듯이 태그를 안전하게 벗기 위해서는 파서를 사용해야 합니다.
DOM과 같은 편리한 파서에 액세스하지 않고 입력이 올바른 형식인지 신뢰할 수 없는 경우 sanitize-html과 같은 패키지를 사용하는 것이 좋을 수 있으며 다른 세정제도 사용할 수 있습니다.
브라우저의 파서를 사용하는 것이 현재 브라우저에서는 아마도 가장 좋은 방법일 것입니다.다음 사항이 작동하지만 다음과 같은 주의사항은 다음과 같습니다.
- HTML은 다음 범위 내에서 유효합니다.
<div>
요소.포함된 HTML<body>
또는<html>
또는<head>
태그가 에 유효하지 않습니다.<div>
따라서 올바르게 해석되지 않을 수 있습니다. textContent
(DOM 표준 속성)과 (비표준) 속성이 동일하지 않습니다.예를들면,textContent
에 텍스트를 포함합니다.<script>
요소화innerText
(대부분의 브라우저에서는) 할 수 없습니다.이는 IE <=8에만 해당되며, IE <=8은 지원하지 않는 유일한 주요 브라우저입니다.textContent
.- HTML에는 다음 항목이 없습니다.
<script>
요소들. - HTML은 그렇지 않습니다.
null
- HTML은 신뢰할 수 있는 소스에서 가져옵니다.이를 임의의 HTML과 함께 사용하면 임의의 신뢰할 수 없는 JavaScript를 실행할 수 있습니다.다음 예는 중복 질문에 대한 Mike Samuel의 코멘트에서 나온 것입니다.
<img onerror='alert(\"could run arbitrary JS here\")' src=bogus>
코드:
var html = "<p>Some HTML</p>";
var div = document.createElement("div");
div.innerHTML = html;
var text = div.textContent || div.innerText || "";
var html = "<p>Hello, <b>World</b>";
var div = document.createElement("div");
div.innerHTML = html;
alert(div.innerText); // Hello, World
이것이 가장 좋은 방법입니다.브라우저에 맡겨주세요HTML 구문 분석입니다
편집: 아래 코멘트에 기재되어 있듯이 이 솔루션은 가장 크로스 브라우저 솔루션이 아닙니다.가장 크로스 브라우저 솔루션은 요소의 모든 하위 항목을 재귀적으로 검토하고 발견된 모든 텍스트 노드를 연결하는 것입니다.그러나 jQuery를 사용하는 경우 이미 다음과 같이 처리됩니다.
alert($("<p>Hello, <b>World</b></p>").text());
텍스트 방식을 확인하십시오.
이 질문이 납득이 가는 답변인 것은 알지만, 모든 경우에 효과가 있는 것은 아니라고 생각합니다.
완전성을 위해, 그리고 여기에 너무 많은 시간을 할애했기 때문에, 우리는 결국 php.js의 함수를 사용하게 되었습니다(PHP에 익숙한 사람들에게는 꽤 좋은 라이브러리이지만 때때로 약간의 JavaScript를 실행하기도 합니다).
http://phpjs.org/functions/strip_tags:535
그것은 내가 어플리케이션에 집어넣은 모든 종류의 입력을 성공적으로 처리할 수 있는 유일한 자바스크립트 코드인 것처럼 보였다.즉, 그것을 깨뜨리지 않고– 다음 항목에 대한 제 코멘트를 참조해 주십시오.<script />
위에 태그를 붙입니다.
언급URL : https://stackoverflow.com/questions/5002111/how-to-strip-html-tags-from-string-in-javascript
'programing' 카테고리의 다른 글
'SQLSTATE[22007]' 메시지와 함께 'PDOException' 예외 발생:잘못된 날짜/시간 형식: 1366 잘못된 문자열 값 (0) | 2022.11.01 |
---|---|
Java 어플리케이션마다 1개의 JVM이 있습니까? (0) | 2022.10.23 |
mysql 경고 해결 방법: "InnoDB: page_cleaner: 1000ms 의도 루프에 XXXms가 걸렸습니다.설정이 최적이 아닐 수 있습니다. (0) | 2022.10.23 |
SQL Syntax Error for 5.5.35-MariaDB (0) | 2022.10.23 |
컴포넌트의 useState에서 업데이터를 스테이트하기 위한 콜이 여러 번 발생하면 여러 번 재렌더가 발생합니다. (0) | 2022.10.23 |