many languages에 대한 문법이있는 ANTLR과 같은 파서 생성기를 살펴보고 주석을 안정적으로 찾을 수있는 중첩 구문 분석기를 작성하십시오. 정확성이 중요한 경우 정규 표현식이 도움이되지 않습니다. 그렇다면 100 % 정확하지는 않습니다.
는
문제 3은, 언어의 댓글이 항상 언어의 주석 아니다 고려한다.
<textarea><!-- not a comment --></textarea>
<script>var re = /[/*]not a comment[*/]/, str = "//not a comment";</script>
문제 4, 언어에 포함 된 주석은 분명히 코멘트가 아닐 수도 있습니다.
<button onclick="// this is a comment// notAComment()">
문제 5, 댓글은 브라우저 구성 방법에 따라 다를 수 있습니다.
<noscript><!-- </noscript> Whether this is a comment depends on whether JS is turned on -->
<!--[if IE 8]>This is a comment, except on IE 8<![endif]-->
나는 소프트웨어 구현 세부 사항을 누출 방지하기 위해 소스 코드에서 주석을 제거하다 상황에 맞는 템플릿 시스템에 부분적으로이 문제를 해결했다.
https://github.com/mikesamuel/html-contextual-autoescaper-java/blob/master/src/tests/com/google/autoesc/HTMLEscapingWriterTest.java#L1146은 JavaScript에서 주석이 식별되는 테스트 케이스를 보여주고 나중에 테스트 케이스는 CSS 및 HTML에서 식별 된 주석을 보여줍니다. 주석을 찾기 위해 해당 코드를 조정할 수 있습니다.PHP 코드 섹션에서 주석을 처리하지 않습니다.
당신은 이것이 사소하지 않다는 것은 맞습니다. 주석을 안정적으로 제거하려면 파일 (PHP, HTML 및 Javascript)을 완전히 구문 분석해야합니다. 가능한 경우 PHP로 작업하는 것이 좋습니다. 필자는 Perl을 더 좋아하지만 PHP에서 작동하는 PHP 도구는 Perl 도구보다 PHP에서 작동하는 것이 낫습니다. 다음은 시작하기위한 것입니다. http://stackoverflow.com/questions/503871/best-way-to-automatically-remove-comments-from-php-code. 그런 다음 PHP에서 HTML 및 자바 스크립트 파서를 찾아 파일의 해당 부분에 대해 마찬가지로 수행해야합니다. – dan1111
HTML 파일에 PHP가있는 이유는 무엇입니까? CSS, JavaScript 및 HTML을 사용하고 코멘트, 공백을 제거하고 일반적으로 페이지를 "축소"할 수있는 제품의 경우 "HTML Minifier"를 사용합니다. –
@RB. 사전 렌더링 된? – Jivings