<
은 태그 시작을 의미하고 <
은 리터럴 미만 소문자를 의미하므로 무시할 태그와 그렇지 않은 것을 구분할 수 없습니다.
에 대해이 같은 불쾌한 신뢰할 수없는 정규식 뭔가를 사용하여 종래 형성 시작 또는 끝 태그되지 않은 <
용도를 발견하는 것입니다 할 수있는 모든 :
<(?!\w+(\s+\w+="[^"<]*")*\s*/?>|/\w+\s*>)
및 <
로 교체. 마찬가지로 &
&
함께 : (이스케이프 할 >
일반적으로하지 않습니다.)
&(?!\w+;|#\d+;|#x[0-9A-Fa-f]+;)
이 요소를 구성하는 모든 가능한 유효한 방법을 허용하지 않습니다, 그것은 수
깨진 잘못 중첩 된 요소 , 존재하지 않는 엔티티를 포함하며 주석과 같은 비 요소 구문을 엉망으로 만듭니다. regex는 HTML을 파싱 할 수 없기 때문에 HTML에 바삭 바삭한 깨진 비트가 추가되지 않습니다.
그래서 거의 확실하지 않습니다. 실수로 div를 열어 둔 상태에서 페이지를 손상시키지 않는 적절한 마크 업을 원한다면 가장 좋은 첫 번째 단계는 XHTML로 구문 분석하고 올바른 형식의 XML이 아닌 경우 오류로이를 거부하는 것입니다.
리터럴 <
이 이스케이프 처리되지 않은 출력을 생성하는 서식있는 텍스트 편집기 구성 요소가있는 경우 해당 구성 요소를 덜 겁나는 것으로 교체해야합니다. 그러나 일반적으로 사용자가 HTML을 만들도록하는 것은 좋지 않습니다. 왜냐하면 실제로 HTML을 쓰레기로 만들기 때문입니다. 게다가 누구나 HTML을 입력 할 수있게함으로써 자바 스크립트로 사이트와 보안을 망칠 수 있습니다. 더 간단한 텍스트 마크 업 언어가 종종 승리합니다.
내가 이해하고 있는지 확인하기 위해 예약 된 HTML 문자 (&, <,>, ', ", ...)를 HTML 엔터티로 변환하려고하지만 <,>이 아닌", "태그 자체는 정확합니까? – David
오른쪽 태그 만 바꿀 수 있습니다. – backslash17