2012-10-19 10 views
8

私はHTMLファイルを持っており、その中にはJavascript、PHPなどがあり、HTMLファイルに入れてもしなくてもかまいません。HTMLでのコメントの検索

このhtmlファイルからすべてのコメントを抽出します。

私はこれを行うには二つの問題点を指摘することができます:1つの言語でのコメントは、他の中のコメントではないかもしれないです何

  1. Javascriptでは、//マーカーを使用して行の残りの部分をコメントアウトしています。しかし、URLには//が含まれているため、 には、//の代わりに の代わりに何も入力しないと、URLの一部が削除される可能性があります。

これは簡単な問題ではありません。

どこでもこのソリューションをご利用いただけますか?

すでにこれを行っている人はいますか?

+3

これは些細なことではないことは間違いありません。コメントを確実に削除するには、ファイル(PHP、HTML、Javascript)を完全に解析する必要があります。可能であればPHPで作業することをお勧めします。私はPerlを好きですが、PHPで動作するPerlツールよりもPHPのツールが優れています。ここにあなたを始めるための何かがあります:http://stackoverflow.com/questions/503871/best-way-to-automatically-remove-comments-from-php-code。 PHPのHTMLパーサとjavascriptパーサーを見つけて、ファイルの部分に対して同様に行う必要があります。 – dan1111

+0

あなたのHTMLファイルにPHPがあるのはなぜですか?私はちょうどあなたのページをコメント、空白、および一般的に "スリム"を削除することができます製品のCSS、JavaScriptとHTML、次にGoogleの "HTMLマイナー"を持っています。 –

+1

@ RB。事前レンダリング? – Jivings

答えて

0

あなたは、正規表現に基づいていくつかのアプローチを考えているようです。ファイル全体でそうするのは苦痛です。興味深いテキストや興味のないテキストをハイライトしたり破棄したりするツールを試してみましょう。保持/廃棄基準に従ってあなたのふるいから残されるもの。 HTML :: TreeとTreeBuilderを見てみると、HTMLマークアップを扱うと非常に便利です。

2

問題2:いずれの言語でも「www.url.com」または「www.url.com」ですべてのURLを引用しているわけではありませんか?よく分かりません。そうであれば、コードを解析して、バックスラッシュの前に引用符があるかどうかをチェックして、それが実際のURLか単にコメントかどうかを確認するだけです。

+0

これは実際に私が今やっていることです。 –

+0

問題を解決しましたか?そうでない場合(多分私はあなたの質問の権利を理解していない)、何が問題なのですか? :) –

1

文法がANのパーサージェネレーターを見て、確実にコメントを見つけるためのネストパーサーを作成します。正確さが重要な場合、正規表現はあなたを助けません。それでも100%の正確さはありません。

問題3は、言語でのコメントは、常に言語でのコメントではありません考えてみましょう。

<textarea><!-- not a comment --></textarea> 
<script>var re = /[/*]not a comment[*/]/, str = "//not a comment";</script> 

問題4、言語に埋め込まれたコメントは、明らかにコメントではないかもしれません。

<button onclick="&#47;&#47; this is a comment//&#10;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]--> 

私は、ソフトウェアの実装の詳細をリーク防止のために、ソースコードからコメントをElideの文脈テンプレートシステムのために、部分的にこの問題を解決しなければなりませんでした。

https://github.com/mikesamuel/html-contextual-autoescaper-java/blob/master/src/tests/com/google/autoesc/HTMLEscapingWriterTest.java#L1146は、JavaScriptでコメントが識別され、後でテストケースがCSSとHTMLで識別されるコメントを表示するテストケースを示しています。あなたは、コメントを見つけるためにそのコードを適応させることができるかもしれません。PHPコードセクションでコメントを処理しません。

0

私はHTMLファイルを文字配列に変換して解析します。 「<」、「 - 」、「www」、「http」などのキーストリングは、前方に移動してスキップまたは削除すると検出できます。

開始/終了インデックスは適切に識別する必要がありますが、これは挑戦ですが最大限に活用できます。

パフォーマンスに問題がない場合は、処理を簡略化する方法もあります。たとえば、すべてのタグはXML :: Twigで取得でき、JSコメントを検出するために文字列を解析できます。

関連する問題